ruby-on-rails – Simple_form错误 – ActiveRecord :: Relation
发布时间:2020-12-17 04:35:29 所属栏目:百科 来源:网络整理
导读:我试图通过将params传递到where来为我的编辑操作添加一些条件逻辑. 每当我使用.find(params [:id]以外的任何东西时,ActiveRecord :: Relation:Class的错误未定义方法`model_name’ 我的代码如下 控制器: def edit @office = Office.where("id = ? AND com
我试图通过将params传递到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]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |