0

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

4

1 回答 1

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  
于 2013-04-09T01:37:31.617 回答