Javascript @用户=所选内容

Javascript @用户=所选内容,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,当选择:user\u id时,我们如何在集合中显示\u选择该用户的挑战?换句话说,我们如何使@user等于:user\u id是在_dueler\u字段中选择的 决斗/_form.html.erb 使现代化 刷新页面时,无需转到控制器获取用户质询,解决此问题的最佳形式似乎是获得一个函数,该函数将质询返回到通过用户id选择的更改操作激活的json请求 在用户和控制器中: def challenges user = User.find_by_id(user_params) @challeng

当选择:user\u id时,我们如何在集合中显示\u选择该用户的挑战?换句话说,我们如何使@user等于:user\u id是在_dueler\u字段中选择的

决斗/_form.html.erb

使现代化
刷新页面时,无需转到控制器获取用户质询,解决此问题的最佳形式似乎是获得一个函数,该函数将质询返回到通过用户id选择的更改操作激活的json请求

在用户和控制器中:

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
})

您可能需要使用javascriptI来解决这个问题,我对@lcguida持开放态度。我打开了一个悬赏,因为我自己无法解决这个问题。也许这会有帮助:对不起,我没有时间真正回答你的问题。你可以通过params[:duel][:user_id]获得用户的id,不?不,我得到的是一个零值@ashitaka谢谢好的先生!我认为这是正确的。所以我在users\u controller中添加了def挑战,但是我是否在duels/\u dueler\u fields.html.erb中更改了任何内容?我还考虑了你的javascript建议。更新问题:
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
  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>
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
$("#user_select").on("change", function(){
// make ajax petition with the user: {user_id: $(this).val()}
// and rescue the results to display wher you want
})