如何从嵌套id中获取父id,等于(params [:id])?(How to get parent id from nested id which equals (params[:id])?)

编程入门 行业动态 更新时间:2024-10-19 22:23:28
如何从嵌套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? end

challenges/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) end

And, 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!

更多推荐

本文发布于:2023-08-05 19:19:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1438003.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:嵌套   id   params   equals   nested

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!