私は、ユーザbのニックネームとともに、与えられた2人のユーザのidを保持するユーザ間の単方向関係モデルを持っています。私はフォームを使用して、ユーザーが別のユーザーの電子メールアドレスとニックネームを渡すことを許可します。その電子メールを持つユーザーが存在する場合は、ユーザー間の関係を作成します。一致するユーザーがいない場合は、その電子メールで新しい「ファントム」ユーザーを作成し、その関係を構築します。私は比較的レールに新しい、そして最初だ任意の(非モデル属性の)値をrailsアクションに渡す方法は?
は単純に基本的に使用してみました:
= form_for @relationship do |f|
= f.label :email
= f.text_field :email
= f.label :nickname, "Nickname"
= f.text_field :nickname
= f.submit "Submit", class: "btn btn-large btn-primary"
関係モデルは、電子メール属性が含まれていないため、これが失敗しました。私はそれから、関係モデルを直接参照していなかったので、それがうまくいくかもしれないと思って、次のことを試しました。
= form_tag :controller => "relationships", :action => "create" do
= label :email
= text_field :email
= label :nickname, "Nickname"
= text_field :nickname
= submit "Submit", class: "btn btn-large btn-primary"
しかし、それは私が関係モデルに電子メールフィールドを追加することもできますが、それは私がそれを使用しますときは別に必要ないですエラー「引数の数が間違って(2 1)」
をスローします目的のユーザーを検索します。私の計画は、リレーションシップコントローラーの作成アクションに渡された電子メールとニックネームの値を使用して、リレーションシップを作成するか、新しいユーザーを作成し、次にケースに応じてリレーションシップを作成することでした。だから、どのようにしてコントローラアクションに任意の値を渡すことができますか?
強力なパラメータを持つRails 4はどうなりますか? – Micah
@Micah http://stackoverflow.com/a/15920542を参照してください。許可されたparamsリストに追加するだけです。 – Anthony