[英]simple_form undefined method `model_name' for NilClass:Class
[英]Simple_form Error - undefined method `model_name' for ActiveRecord::Relation:Class
我试图通过将参数传递到where来向我的编辑动作添加更多条件逻辑。
每当我使用.find(params [:id]之外的任何东西时,ActiveRecord :: Relation:Class的错误未定义方法“ model_name”
我的代码如下
控制器:
def edit
@office = Office.where("id = ? AND company_id = ?", params[:id], @company.id )
end
视图:
<%= simple_form_for @office, :url => settings_office_path, :html => { :class => "office_form" } do |f| %>
<h1>Edit <%= @office.office_name %> Details</h1>
<%= render :partial => 'form', :locals => { :f => f } %>
<% end %>
我输出了@office的类,它是ActiveRecord :: Relation。 如果我只是用
@office = Office.find(params[:id])
输出是Office。
我认为这是问题所在,但不知道如何解决。 有任何想法吗?
该表单期望一条记录位于@office
实例变量中, where
-method不会返回一条记录,而是一个关系(一旦被查询,该关系可以是多个记录)。
正确的方法是:
@office = Office.where(:company_id => @company.id).find(params[:id])
甚至更好的是,如果您已定义关系:
@office = @company.offices.find(params[:id])
我也遇到了使用.first
修复的相同问题。
与此类似:
def edit
@office = Office.where("id = ? AND company_id = ?", params[:id], @company.id ).first
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.