我有这个列表应该显示一个类别中的所有活动,它有点工作,但显示的最后一个元素很奇怪。数据库中有4个针对此特定类别的活动,在列表的末尾我收到了一个项/categories/1/activities
%table.catlist
- @category.activities.each do |activity|
%tr{:class => cycle('one','two')}
%td= link_to activity.name, [@category, activity]
%td
我也尝试过:
link_to activity.name, category_activity_path(:category_id => @category.id, :id => activity.id)
但那根本不起作用,给我这个错误:
No route matches {:category_id=>1, :action=>"show", :controller=>"activities", :id=>nil}
路线嵌套如下:
resources :categories do
resources :activities do
resources :records
end
end
它实际上显示了一切正确,但它用这个奇怪的元素关闭了列表,这个元素基本上是活动路径,但是没有id。
我认为这是因为cycle
方法应该在CSS类之间切换。任何想法如何避免空行?
答案 0 :(得分:1)
您最有可能在控制器中构建一个新活动,该活动包含在@category
的活动列表中。如果控制器中包含以下代码,
@activity = @category.activities.build
尝试将其更改为
@activity = Activity.new category_id: @category.id
或在视图中添加一项检查以仅显示持久性活动。
- @category.activities.each do |activity|
- next if activity.new_record?
%tr{:class => cycle('one','two')}
%td= link_to activity.name, [@category, activity]
%td