3

indexの 2 つのフォームを表示する方法がSign inありSign upます。これは、ユーザーが同じ場所からアカウントを作成してログインできることを意味します。

そのため、との 2 つのパーシャルを使用してビューとフォームを表示するメソッドを使用してusers controllerいます。indexSign inSign up_signin.html.erb_signup.html.erbindex.html.erb

任意のアイデアコントローラからのメソッドnewcreateメソッドを処理するにはどうすればよいですか(新しいメソッドを無視できるかもしれません)?userssessions

4

3 に答える 3

3
<%= form_for :signin,:url=>{:controller=>"yourcontroller",:action=>"signin"},:html=>{:id=>"signin_form"} do |f|%>
  ...
<%end%>

<%= form_for :signup,:url=>{:controller=>"yourcontroller",:action=>"signup"},:html=>{:id=>"signup_form"} do |f|%>
...
<%end%>
于 2013-05-31T04:59:48.227 に答える
0

私が見つけた 1 つの簡単な回避策は、2 つのフォームに少なくとも 1 つの一意の名前のパラメーターがある場合、POST 要求を単一のアクションに単純にルーティングできるというものでした。次に、アクション内でどのパラメーターが存在するかを確認し、対応するコードを実行します。コントローラーの 1 つのアクション内に本質的に 2 つのアクションが存在することになります。

def create
   if params[:username] and !params[:name]
     # You know that the user pressed submit on whichever form 
     # has a field that fills params[:username].
     # So do the action with that form's parameters here
     # i.e, login an existing user

     respond_to do |format|
       format.html {redirect_to '/home', notice: "Login successful"}
     end

   elsif params[:name] and !params[:username]
     # You know that the user pressed submit on whichever form 
     # has a field that fills params[:username].
     # So do the action with that form's parameters here
     # i.e, create a new user

     respond_to do |format|
       format.html {redirect_to '/onboard', notice: "Thanks for signing up"}
     end
   end
end

2 つのフォームがオンになっているページから POST リクエストが送信されたときに、このコントローラのこのアクションに送信されるように、routes.rb で必ず設定してください。

お役に立てれば!

于 2015-09-04T18:19:02.813 に答える