:user_id
が選択された場合、次のように表示されます。collection_select
そのユーザーの課題はありますか?言い換えれば、どのように我々は@challenges = {動的に変化するユーザー} .challenges
@challenges = @user.challenges.order(:created_at)
を作ることができる。例えば、
あなたはすべての課題が列挙されている見ることができると私は変更してもuser
すべての課題はまだ記載されていたよう。 javascriptは、それぞれのユーザーの課題を列挙することは決してありません。
スキーマ
create_table "duelers", force: true do |t|
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|
t.text "consequence"
t.text "reward"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
モデル
class Duel < ActiveRecord::Base
belongs_to :user
belongs_to :challenge
has_many :duelers
accepts_nested_attributes_for :duelers, :reject_if => :all_blank, :allow_destroy => true #correct
end
class Dueler < ActiveRecord::Base
belongs_to :user
belongs_to :challenge
belongs_to :duel
end
経路
get 'duels/user_challenges', :to => 'duels#user_challenges', as: 'user_challenges'
のduels_controller
def user_challenges
@user = User.find(params[:id])
@challenges = @user.challenges.order(:created_at)
end
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)
respond_with(@duel)
end
決闘/ _form
<%= 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 %>
決闘/ _dueler_fields.html.erb
<%= f.select :user_id, User.order(:name).map { |user| [user.full_name, user.id] }, include_blank: true, id: "change-challenge-options" %>
will
<%= render partial: 'user_challenges', locals: { challenges: Challenge.order(:created_at) } %>
<script> # Upon changing :user_id this javascript never triggers, how to fix it? Not sure if just javascript problem or also controller or ruby
$("#change-challenge-options").change(function() {
$.ajax({
type: "GET",
url: '<%= user_challenges_path %>',
data: {name: $('#change-challenge-options').prop('value')}
});
});
</script>
決闘/ _user_challenges.html.erb
<div id="dropdown-no-2">
<%= collection_select(:dueler, :challenge_id, challenges, :id, :full_challenge, include_blank: true) %>
</div>
user_challenges.js.erb
$("#dropdown-no-2").html('<%=j render :partial => "user_challenges", locals: {challenges: @challenges} %>');
あなたが提供した情報は、問題をデバッグするのに役立ちますが、この問題の解決方法を明らかにしていません。具体的に何をしようとしていますか?javascript(クライアント経由で既にロードされ、フィルタリング可能なデータですか?)、ajaxまたは同期ルートですか?あなたの解決策は、あなたが進めているアプローチに依存します。 –
@maxpleaner仕事をやっても、おそらくAJAXですが、申し訳ありませんが、私はjavascriptがあまりよくありません。それを得るために必要なものは、ユーザが選択されたときに、それぞれの課題だけが 'collection_select'に表示されます。申し訳ありませんが、これは数週間続いています。私はこの時点でキーボードに対して顔を叩いています。 –
私はあなたの問題がどこにあるのかを見て、答えを投稿したと思います。この場合、 'duels/_dueler_fields.html.erb'のコードだけが関連していて、他のすべてのコードスニペットを含めれば、問題が見つけにくくなりました。 StackOverflowの人々は、質問に有効なコードを追加するようにポスターに指示することがよくあります。しかし、フリップサイドには「コード・ダンプ」もありますが、これも同様に推奨されません。あなたは、コードダンプのようなものが出てきています。そのため、一部の人がそれをクローズすると警告しています。 –