我正在构建一个Kid's Chore App。在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 />
..这不起作用,因为:
如何在此示例中将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
答案 0 :(得分:0)
我通常为这种情况创建子路径。
<强>的routes.rb 强>
resources :children do
resources :chores
end
<强> chores_controller.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)
答案 1 :(得分:0)
link_to child.name, chores_path(:child_id => child.id)
然后,您可以使用params[:child_id]
例如,该链接将指向/chores?child_id=1
。
答案 2 :(得分:0)
由于看起来您只想在Children#show视图中呈现杂项的主列表,或许您可以在您的children / show.html.erb中的适当位置尝试渲染'chores/index'
。只需确保在@chores
方法中设置了主ChildrenController#show
变量。不确定这是否是一个完整的解决方案,但有我的贡献。