ruby-on-rails – Simple_form错误 – ActiveRecord :: Relation:Class的未定义方法`model_name’

我试图通过将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])

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...