我在另一个模型中有类似的东西,所以必须有一些我忽略的小事。
我有一个模型请求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)
答案 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