RoR 3初学者,传递ID的麻烦

时间:2012-03-09 15:55:21

标签: ruby-on-rails

以下代码可以正常使用:

<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' 

提前致谢!

2 个答案:

答案 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)

尽可能尝试并坚持使用indexshow等RESTful命名约定。使用view会产生不必要的复杂性。有时您会遇到无法直接将其映射到REST的情况,因此如果是这种情况,请务必创建新操作。 “视图”应与“显示”相同。

使用resource :events应该可以实现90%的开箱即用功能,并且可以自定义它以不生成您不需要的路线。

这样可以为您提供可以简化链接的命名路由助手:

<%= button_to "View", event_path(allevent) %>

这些方法比手动路由方法更可靠,这种方法很容易出错。