私はユーザー間に一方向の関係モデルを持っています(ユーザーには多くの関係があります)。これは、ユーザーaのユーザーbのニックネームとともに2人の特定のユーザーのIDを保持します。フォームを使用して、ユーザーが別のユーザーの電子メールアドレスとニックネームを渡せるようにしたい。その電子メールを持つユーザーが存在する場合は、ユーザー間の関係を作成します。一致するユーザーがいない場合は、その電子メールで新しい「ファントム」ユーザーを作成してから、関係を構築します。
私はレールに比較的慣れていないので、最初に基本を使用して素朴に試しました。
= 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"
しかし、それは「間違った数の引数(1対2)」というエラーをスローします
リレーションシップモデルにメールフィールドを追加することもできますが、目的のユーザーを検索するために使用する場合を除いて、メールフィールドは必要ありません。私の計画は、リレーションシップコントローラーの作成アクションに渡された電子メールとニックネームの値を使用して、リレーションシップを作成するか、新しいユーザーを作成してから、ケースに応じてリレーションシップを作成することでした。では、どうすれば任意の値をコントローラーアクションに渡すことができますか?