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