以下代码可以正常使用:
<table border="1">
<% @allevents.each do |allevent| %>
<tr>
<td><%= allevent.name %></td>
<td><%= button_to "View", :action => "view", :allevent_id => "0000000000000131"%>
</tr>
<% end %>
</table>
然而,当我换掉我传给的身份证时:
<%= button_to "View", :action => "view", allevent_id %>
传递零值。知道如何正确引用这个吗?它似乎不喜欢allevent.id,但allevent_id是零?我测试了在输出文本中显示allevent.id,看起来是正确的。
参考控制器代码:
def index
@allevents = Event.all
end
还想添加我的routes.rb代码,这似乎含糊不清:
match 'event/:action' => 'events#view'
提前致谢!
答案 0 :(得分:0)
尝试:
<table border="1">
<% @allevents.each do |allevent| %>
<tr>
<td><%= allevent.name %></td>
<td><%= button_to "View", :action => "view", :allevent_id => allevent.id %>
</tr>
<% end %>
</table>
答案 1 :(得分:0)
尽可能尝试并坚持使用index
,show
等RESTful命名约定。使用view
会产生不必要的复杂性。有时您会遇到无法直接将其映射到REST的情况,因此如果是这种情况,请务必创建新操作。 “视图”应与“显示”相同。
使用resource :events
应该可以实现90%的开箱即用功能,并且可以自定义它以不生成您不需要的路线。
这样可以为您提供可以简化链接的命名路由助手:
<%= button_to "View", event_path(allevent) %>
这些方法比手动路由方法更可靠,这种方法很容易出错。