時々、カスタマイズされた登録リンクをリードに送信します。リンクには、登録フォームへの事前入力に使用できるパラメーターが含まれています。
http://www.example.com/users/sign_up?user[company_name]=Foo&user[region]=NA
登録フォームには、会社名と地域を受け入れるためのフィールドがあります。これは、登録リンクに基づいて事前に入力できます。
registrations#new
これは実際には機能するはずですが、アクションの実装方法によるものではありません。新しいアクションは build_resource
、空のハッシュを使用してメソッドを呼び出します。
def new
resource = build_resource({})
respond_with resource
end
build_resourceメソッドはresource_params
、入力がnil以外の場合を無視します。
def build_resource(hash=nil)
hash ||= resource_params || {}
self.resource = resource_class.new_with_session(hash, session)
end
この問題を解決するには、登録コントローラーのnew
アクションをオーバーライドする必要がありました。私の解決策はもろいので好きではありません。
def new
resource = build_resource
respond_with resource
end
new
アクションが空のハッシュで呼び出される理由はありますか?create
(アクションのように)空のハッシュなしで呼び出すことはできますか?