小编bav*_*ten的帖子

法拉第宝石未定义方法 'bytesize'=' for Hash`

我想向 API 发送 POST 请求。这是我的代码:

conn = Faraday.new(url: BASE) do |faraday|
  faraday.response :logger
  faraday.request  :url_encoded
  faraday.headers['Content-Type'] = 'application/json'
  faraday.headers["Authorization"] = "bearer #{AppConfig.instance.access_token}"
  faraday.adapter Faraday.default_adapter
end
form_data = {a: 1, b: 2}
conn.post("/api/test", form_data)
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

conn = Faraday.new(url: BASE) do |faraday|
  faraday.response :logger
  faraday.request  :url_encoded
  faraday.headers['Content-Type'] = 'application/json'
  faraday.headers["Authorization"] = "bearer #{AppConfig.instance.access_token}"
  faraday.adapter Faraday.default_adapter
end
form_data = {a: 1, b: 2}
conn.post("/api/test", form_data)
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

conn.post("/api/test", form_data.to_json)
Run Code Online (Sandbox Code Playgroud)

但它也不起作用。

ruby ruby-on-rails faraday ruby-on-rails-4

6
推荐指数
1
解决办法
6063
查看次数

如何在gem Pundit中使用命名空间

我有2个控制器,1个用户,1个用于管理员.

控制器/ articles_controller.rb

class ArticlesController < ActionController::Base
  ...
  def show 
    @article = Article.find(parmas[:id])
    authorize @article
  end
  ...
end
Run Code Online (Sandbox Code Playgroud)

控制器/管理/ articles_controller.rb

class Admin::ArticlesController < AdminController
  ...
  def show 
    @article = Article.find(parmas[:id])
    authorize @article
  end
  ...
end
Run Code Online (Sandbox Code Playgroud)

我有2个文件策略策略/ article_policy.rb

class ArticlePolicy
  extend ActiveSupport::Autoload
  autoload :Admin

  attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record = record
  end

  def show?
    # allow show for every user. 
    true 
  end  
end
Run Code Online (Sandbox Code Playgroud)

和一个文件policy/admin/article_policy.rb

class Admin::ArticlePolicy

  attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-4 pundit

4
推荐指数
1
解决办法
1705
查看次数

响应 CSV 时错过模板

我有一个下载文件 csv 的操作,但是当点击错误时 missing template

在我的行动中编码

def export 
    respond_to do |format|
      format.html
      format.csv { send_data UserDetail.order('id desc').first(20).to_csv }
    end
  end
Run Code Online (Sandbox Code Playgroud)

在我看来:

= link_to "Export CSV", export_call_center_user_details_path(format: "csv"), :class => "btn btn-default"
Run Code Online (Sandbox Code Playgroud)

错误:

由 CallCenter::UserDetailsController#export as CSV 处理在 5 毫秒内完成 500 内部服务器错误

在 user_details#export 中出现 ActionView::MissingTemplate:

缺少模板 call_center/user_details/export, application/export with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}。

当我尝试删除行时format.html 出现错误:

在 4ms 内完成 406 Not Acceptable (ActiveRecord: 0.3ms)

如何修复上面的错误?

更新

错误:

开始 GET "/call_center/user_details/export.csv" for 127.0.0.1 at 2016-06-20 16:10:32 +0700 Processing by …

ruby csv ruby-on-rails ruby-on-rails-3

2
推荐指数
1
解决办法
1855
查看次数