0
ログインとサインアップフォームは同じページにあります。どのフォームが記入されているかに基づいて、どの「投稿」ルートを取るべきかを指定しようとしています。登録フォームの投稿をcreate_userアクションに送信し、ログインフォームの投稿を作成アクションに送信する必要があります。ビューで指定したものとは関係なく、何らかの理由でフォームを作成します。create_userアクションは、ログインフォームの場合でも同様です。ルートは経路を指定します
ルート:
get '/login' => 'sessions#new', as: :users
post '/login' => 'sessions#create_user'
post '/login' => 'sessions#create'
ビュー:
<div class="forms">
<div class="login">
<h3>Login</h3>
<%= form_for(:session, url: {action: "create"}) do |x| %>
<%= x.email_field :email, :placeholder => " Email", :style => "height:50px; width:350px; border: solid #ff4d4d; background-color:#eff5f5; margin-top:20px; padding-left:5px;" %>
<%= x.password_field :password, :placeholder => " Password", :style => "height:50px; width:350px; border: solid #ff4d4d; background-color:#eff5f5; margin-top: 35px; padding-left:5px;" %>
<%= x.submit "Login" %>
<% end %>
</div>
<div class="divide"></div>
<div class="signup">
<h3>Signup</h3>
<%= form_for @new_user, url: {action: "create_user"} do |x| %>
<%= x.text_field :name, :placeholder => " Name", :style => "height:50px; width:350px; margin-top:20px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %>
<%= x.email_field :email, :placeholder => " Email", :style => "height:50px; width:350px; margin-top:35px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %>
<%= x.password_field :password, :placeholder => " Password", :style => "height:50px; width:350px; margin-top:35px; border: solid #ff4d4d; background-color:#eff5f5; padding-left:5px;" %>
<%= x.submit "Submit" %>
<% end %>
</div>
</div>
コントローラー:あなたはそれは奇妙やっているが、これは動作するはず
class SessionsController < ApplicationController
def new
@new_user = User.new
end
def create
@user = User.find_by_email(params[:session][:email])
if @user && @user.authenticate(params[:session][:password])
session[:user_id] = @user.id
redirect_to '/'
else
render '/login'
end
end
def create_user
@new_user = User.new(user_params)
if @new_user.save
session[:user_id] = @new_user.id
redirect_to '/'
else
render '/login'
end
end
def destroy
session[:user_id] = nil
redirect_to '/login'
end
private
def user_params
params.require(:user).permit(:name, :email, :password)
end
ユーザーリソースを追加し、新しいcreate_userアクションをユーザーコントローラーに移動した後で、今は引数エラーが発生しています。セッションの新しいビューで変数が使用されている間に '@new_user'変数を使用していると思いますユーザに新規作成およびアクションを提示する。これをどうやって解決するのですか? @Ecnalyr – nums
@numsそれは別の問題だから、スタック交換の正しいエチケットは、この正しい応答を投票し、それを正しいものとしてマークし、新しい質問をすることを示唆している。 – Ecnalyr
それでは、新しい質問にリンクして回答に役立ててもらえますか? @ Ecnalyr – nums