如何从嵌套id中获取父id,等于(params [:id])?(How to get parent id from nested id which equals (params[:id])?)
如何列出挑战展示页面上所有challenge的duels ?
挑战没有duel_id ,但是dueler有一个challenge_id 。
challenges_controller
def show @challenge = Challenge.find(params[:id]) @correct_user = current_user.challenges.find_by(id: params[:id]) @duel = # How to get any and all duels which have a dueler whose challenge_id is equal to @challenge? end挑战/ show.html.erb
<% @duel.duelers.each do |dueler| %> # Two duelers per duel. I want to show both duelers on page. <%= dueler.user.name %> will <%= dueler.challenge.name %>. <% end %> <%= @challenge.name %>铁轨
Duel.last id: 169, pry(main)> Dueler.last id: 276, user_id: 2, challenge_id: 301, duel_id: 169,How can I list all the duels a challenge has on the challenge show page?
A challenge doesn't have a duel_id, but a dueler has a challenge_id.
challenges_controller
def show @challenge = Challenge.find(params[:id]) @correct_user = current_user.challenges.find_by(id: params[:id]) @duel = # How to get any and all duels which have a dueler whose challenge_id is equal to @challenge? endchallenges/show.html.erb
<% @duel.duelers.each do |dueler| %> # Two duelers per duel. I want to show both duelers on page. <%= dueler.user.name %> will <%= dueler.challenge.name %>. <% end %> <%= @challenge.name %>rails c
Duel.last id: 169, pry(main)> Dueler.last id: 276, user_id: 2, challenge_id: 301, duel_id: 169,最满意答案
由于duels桌没有challenge_id ,你可以这样做以通过适当的方式决斗。
def show @challenge = Challenge.find(params[:id]) @correct_user = current_user.challenges.find_by(id: params[:id]) @duel = Duel.where(id: @challenge.duelers.pluck(:duel_id).uniq).includes(duelers: :user) end并且,不要忘记在duel模型中添加has_many :duelers 。
由于挑战可以有多个duels ,因此您需要在视图中进行此更改
<% @duel.each do |duel| %> <% duel.duelers.each do |dueler| %> # Two duelers per duel. I want to show both duelers on page. <%= dueler.user.name %> will <%= @challenge.name %>. <% end %> <%= @challenge.name %> <% end %>希望有所帮助!
Since duels table doesn't have challenge_id, you can do this to get duels through duelers.
def show @challenge = Challenge.find(params[:id]) @correct_user = current_user.challenges.find_by(id: params[:id]) @duel = Duel.where(id: @challenge.duelers.pluck(:duel_id).uniq).includes(duelers: :user) endAnd, don't forget to add has_many :duelers in duel model.
Since there can be multiple duels for a challenge, you need to make this change in your view
<% @duel.each do |duel| %> <% duel.duelers.each do |dueler| %> # Two duelers per duel. I want to show both duelers on page. <%= dueler.user.name %> will <%= @challenge.name %>. <% end %> <%= @challenge.name %> <% end %>Hope that helps!
更多推荐
发布评论