0

解決策が見つからず、少し絶望的になっています...

形:

<%= simple_form_for @skill_user, :url => create_new_skill_users_path do |f| %>

<% @skills.each do |skill| %>
<%= skill.name %>

現在...追加フィールド...新機能

<%= f.input :prio, collection: 1..5, :as => :radio_buttons %>
<%= f.text_field :remark%>



<%= check_box_tag "skill_ids[]", "#{skill.id}" %>
<%= hidden_field_tag("skill_id", "#{skill.id}") %>
<%= hidden_field_tag(:user_id, "#{@user.id}") %>
<% end %>

コントローラ:

def create_new_skill
params[:skill_ids].each do|skill_id|
    SkillUser.create(
         :user_id => user_id, :instruction_id => params[:instruction_id], :remark => ??, :prio => ??
    )
  end

これまでのご支援に感謝いたします。今、別の質問/2つの問題があります。よろしいでしょうか...また助けていただけますか。

各行のフォームのラジオ ボタン コレクション。ただし、1 行ごとではなく 1 つとして機能するため、使用できません。各行の skill.id を指す追加のパラメーターが必要です。

また、コントローラーで値を取得する方法。

備考テキスト フィールド。ログに "skill_user"=>{"remark"=>""} が表示されます。上書きされます..どこかに [] が必要です。最善の方法は何ですか?

私が試してみました:

<%= simple_fields_for "skill[]", @skill_user do |f| %> ログが表示されます: "skill"=>[{"remark"=>"test"}

controller :remark => params[:skill][:remark] => Symbol を Integer phh に変換できません...

「text_field_tag[]」はハッシュを返します..

4

2 に答える 2

0

あなたは書くべきです

 params[:skill_ids].each do|skill_id| 
  SkillUser.create(:user_id => params[:user_id], :skill_id => skill_id)
 end

コントローラのアクションで。

同様に、RESTの規則に従って、投稿アクションは新規ではなく作成で行う必要があります

于 2012-09-21T15:41:58.997 に答える
0

おそらく学習段階にあるので、いくつかのヒントをお勧めし、答えを提供します。

アクションとコントローラーに適切な名前を付けます。その場合は、アクション new を持つ SkillController が適していると思います。ルートでは、ほとんどの場合、一致または get/post/put/delete の代わりにリソースを使用します。

 def new_sk
   params[:skill_ids].each do|skill_id| 
    SkillUser.create(
      :user_id => params[:user_id],
      :skill_id => skill_id,
      :name => params[:name]
    )
   end
 end

答えです。このコードは非常に単純です。SkillUser.create に渡すのはハッシュ キーであり、ハッシュ キーは user_id、skill_id、および name であり、それぞれの値は params[:user_id]、params[:skill_id]、および params[:name] です。 ]。

「params」変数の現在の状態 (ハッシュ値がどのようにネストされているかなど) がわからない場合は、次のように出力することをお勧めします。

p params.inspect

アクションの最初に、サーバーを実行している端末に出力されている内容を読んでください。awesome_printサーバー側で実際に何が起こっているのかを確認しようとしているときに、色で印刷し、(名前が示すように) 素晴らしいという宝石があります。

また、良い名前のモデルを作成することをお勧めします。「SkillUser」は間違っています。UserSkill と書いた方が良いでしょう。おそらくすぐにリレーションを扱うことになるでしょう。その点については、Rails ガイドを読むことをお勧めします。

レールガイドはゴールドです。あなたの質問の 90% は、適切な説明とともに、そこで回答されています。

良い一日を過ごしてください。

于 2012-09-21T15:57:39.203 に答える