1

我正在构建一个孩子的家务应用程序。在 application.html.erb 中,我显示了一个列出孩子姓名的侧栏:

  <div id="side">
    <%= link_to "Home", home_path %><br />
    <% @children.each do |child| %>
        <%= link_to child.name, child_path(child.id) %><br />
    <% end %>
  </div>

单击孩子的名字后,我希望显示所有家务。上面的代码将在单击时“显示”孩子。

我在想类似的事情:

        <%= link_to child.name, chore_path %><br />

..这不起作用,因为:

  1. 然后我失去了 child_id... 我需要他们记录他们的家务
  2. 我被路由到http://localhost:3000/chores/1(我只想要家务索引)

在此示例中,如何将 child_id 保留为变量但显示杂项索引?

干杯,克里斯

以下协会:

class Child < ActiveRecord::Base
  has_many :completion, :dependent => :destroy
  has_many :chores, :through => :completion

class Chore < ActiveRecord::Base
  has_many :completions
  has_many :kids, :through => :completions

class Completion < ActiveRecord::Base
  belongs_to :child
  belongs_to :chore
4

3 回答 3

0

我通常为这种情况创建子路由。

路线.rb

resources :children do
  resources :chores
end

家务控制器.rb

def index
  @child = Child.includes(:chores).find_by_id(params[:child_id])
  @chores = @child ? @child.chores : Chores.all
end

现在您可以将链接编写为:

link_to child.name, child_chores_path(child)

更多关于嵌套资源

于 2011-04-29T00:53:07.377 回答
0
link_to child.name, chores_path(:child_id => child.id)

然后你可以在动作中获取孩子IDparams[:child_id]

例如,链接将指向/chores?child_id=1

于 2011-04-29T01:12:24.340 回答
0

由于看起来您只是想在 Children#show 视图中呈现杂务的主列表,也许您可​​以尝试'chores/index'在适当位置的 children/show.html.erb 中进行呈现。只需确保在方法@chores中设置了主变量即可。ChildrenController#show不确定这是否是一个完整的解决方案,但有我的贡献。

于 2011-04-29T03:02:03.153 回答