Active Admin show / panel / table_for中的未定义方法`query_parameters'

时间:2014-07-24 00:19:27

标签: activeadmin has-many

我在另一个模型中有类似的东西,所以必须有一些我忽略的小事。

我有一个模型请求has_many RequestState(s),作为回报has_one。

ActiveAdmin.register Request do
  show do |ad|
    ...
    panel "Request States" do
      table_for ad.request_states do
        column :id
        column :actor_id
        column :state
        column :created_at
      end
    end
  end
end

当我尝试加载页面时,我得到:

NoMethodError in Admin::Requests#show
undefined method `query_parameters' for #<Request:0x000001062040c0>

并且它抱怨每个“列”行。

基础数据似乎很好,因为以下和类似的工作正确地从rails控制台:

Request.find(37).request_states.pluck(:id)

3 个答案:

答案 0 :(得分:0)

请求是Rails保留的类。我想你必须使用其他类名。 http://api.rubyonrails.org/classes/ActionDispatch/Request.html

但不确定,因为它是命名空间......

答案 1 :(得分:0)

我遇到了这个问题,至少对我来说,事实证明是在我的ApplicationController中调用的before_filter中@request的赋值:

      def newsletter
       @request = NewsletterRequest.new
      end

将@request更改为@newsletter_request并避免了碰撞。

答案 2 :(得分:0)

我在ActiveAdmin 1.0中遇到了同样的问题,并在不重命名我的Rails模型的情况下解决了这个问题。我刚刚在ActiveAdmin中重命名了资源:

ActiveAdmin.register Request, as: "BookRequest" do ...

这也迫使我重命名我的路径助手,例如admin_request_path到处变成admin_book_request_path。比重命名Rails模型要少得多。

请参阅https://activeadmin.info/2-resource-customization.html#rename-the-resource