未定义的方法`model_name'在查询中

时间:2014-11-13 23:06:09

标签: ruby-on-rails ruby model-view-controller

基本上我有一个包含很多活动的表,每个活动都有一项运动,我想要将活动的名称(也就是与活动相关的运动名称的名称)链接到通讯运动页面,我收到以下错误:

undefined method `model_name' for Sport::ActiveRecord_Relation:Class

此处的视图我收到错误:

<% @activity.each do |activity| %>
<tr>
<td><%= link_to activity.id, activity_path(activity) %></td>
<td><%= link_to activity.name, searchsport(activity.name) %></td> //error here//
<td><%= activity.ambiente %></td>
<td><%= activity.resume %></td>
<td><%= activity.duration %></td>

我在控制器中有这个辅助方法:

  helper_method :searchsport
  def searchsport(name)
    Sport.where(:name => name)
  end

运动表:

  create_table "sports", force: true do |t|
    t.string   "name"
    t.string   "description"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式使用link_to

link_to "Profile", profile_path(@profile)
link_to "Profile", @profile
link_to "Profile", controller: "profiles", action: "show", id: @profile

所以要么需要url, or an active record object or a hash。你给的是一个ActiveRecord::Relation对象。因此,您必须更改辅助方法以返回如下所示的对象

 helper_method :searchsport
  def searchsport(name)
    Sport.where(:name => name).first
  end

答案 1 :(得分:1)

问题是方法 searchsport 返回一个结果数组,修改它以获得一条记录。

def searchsport(name)
 Sport.find_by_name(name)
end