gpt4 book ai didi

javascript - @user = 选择了什么

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:21 25 4
gpt4 key购买 nike

:user_id 被选中时,我们如何在 collection_select 中显示该用户的挑战?换句话说,我们如何才能使 @user 等于在 _dueler_fields 中选择的任何 :user_id

duels/_form.html.erb

<%= simple_form_for(@duel) do |f| %>
<%= f.fields_for :duelers do |dueler| %>
<%= render 'dueler_fields', :f => dueler %>
<% end %>
<%= link_to_add_association f, :duelers do %>
+ Dueler
<% end %>
The loser(s) will <%= f.text_field :consequence, placeholder: "Enter Consequence" %>
<% end %>

duels/_dueler_fields.html.erb

<%= f.select :user_id, User.order(:name).map { |user| [user.full_name, user.id] } %>  will
<%= collection_select(:dueler, :challenge_id, @challenges, :id, :full_challenge) %>

duels_controller

def new
@duel = Duel.new
@duel.duelers << Dueler.new(user_id: current_user.id, user_name: current_user.name, user_last_name: current_user.last_name)
@user = # How can we set this to whatever was selected?
@challenges = @user.challenges.order(:created_at)
end

schema.rb

  create_table "duelers", force: true do |t| #belongs_to :user & :challenge & :duel
t.integer "user_id"
t.integer "challenge_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "duel_id", null: false
t.boolean "accept"
t.string "user_name"
t.string "user_last_name"
t.string "challenge_name"
end

add_index "duelers", ["duel_id"], name: "index_duelers_on_duel_id", using: :btree

create_table "duels", force: true do |t| #belongs_to :user & :challenge, has_many :duelers
t.text "consequence"
t.text "reward"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

更新

<%= f.select :user_id, User.order(:name).map { |user| [user.full_name, user.id] }, include_blank: true, id: "change-challenge-options" %> will
<%= collection_select(:dueler, :challenge_id, @challenges, :id, :full_challenge, include_blank: true) %>

<script> # Doesn't Work
$( "#change-challenge-options" ).change(function() {
$.ajax({
type: "GET",
url: '<%= user_challenges_path %>',
data: {name: $('#change-challenge-options').prop('value')}
});
});
</script>

最佳答案

刷新页面时没有必要去 Controller 获取用户挑战,解决它的最佳形式似乎是获得一个函数,该函数将挑战返回到从 users_id 选择的“更改”操作激活的 json 请愿书

在 users_controller 中:

def challenges
user = User.find_by_id(user_params)
@challenges = user.challenges.order(:created_at)
respond_to |format|
format.js { render json: @challenges.as_json, status: 200 }
end
end

def user_params
params.require(:user).permit(:user_id)
end

在 JavaScript 中:

$("#user_select").on("change", function(){
// make ajax petition with the user: {user_id: $(this).val()}
// and rescue the results to display wher you want
})

关于javascript - @user = 选择了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39388493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com