由于轨道循环方法,在.each循环结束时清空项目

时间:2013-04-09 01:33:51

标签: ruby ruby-on-rails-3 haml cycle link-to

我有这个列表应该显示一个类别中的所有活动,它有点工作,但显示的最后一个元素很奇怪。数据库中有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类之间切换。任何想法如何避免空行?

1 个答案:

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