0

環境:Rails 3.2.3 with Devise

登録フォームに登録コードを追加したいのですが。登録コードはusersテーブルにありません。そのための個別のregistration_codesがあります。登録フォームにある理由は、登録フォームに入力したユーザーが入力したコードを登録コードテーブルにあるコードと比較し、ユーザーテーブルに入力される値を生成したいからです。

エラーメッセージが表示されます:

undefined method `registration_code' for #<User:0x007f91b57b7890>

そしてそれはviews/registrations/new.html.erbのregistration_codeテキストボックスを表示するコードを指しています

register_codeがusersテーブルの一部ではないという事実を回避するにはどうすればよいですか?フォームにregistration_codeフィールドを追加するまで、フォームは正常に機能していました。

4

2 に答える 2

1

User モデルに、登録コード ロジックを処理するメソッドを作成します。

def registration_code=(code)
  # Check registation_codes table and produce a value that will go into the users table
end

この新しいフィールドでフォームを送信すると、送信された値でこのメソッドを呼び出す必要があります

于 2012-07-20T05:45:37.807 に答える
1

フォームビルダーを使用してフォーム(form_forブロック)を作成していると思います。この場合、おそらく<%= f.text_field :registration_code %>テキストフィールドを表示するようなものを使用していますが、Rails はregistration_codeUser モデルで見つけることができません。あなたが言ったようにそこにないからです。

代わりに、を使用してみてください<%= text_field_tag :registration_code %>。コントローラーからこれにアクセスできますparams[:registration_code]

于 2012-07-20T05:46:58.147 に答える