ログインしてログアウトした後も、フォームの最初の引数をnilまたは空にすることはできません。ユーザーがログインしているときにフォームの消滅を維持しながら、この問題を解決するにはどうすればよいですか?Rails Form_forログアウト後にフォームの最初の引数にnilを含めることはできません。(セッション#破棄)
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-left">
<li>
<% if current_user %>
<li>
<li><%= link_to "Profile Summary", current_user %></li>
</li>
<li>
<li><%= link_to "Edit personal details", edit_user_path %></li>
</li>
<li>
<li><%= link_to "Logout", logout_path, method: "delete" %></li>
</li>
<% else %>
<li><%= form_for @user do |f| %>
<div class="form-group">
<%= f.text_field :email, :placeholder => "Email", class: "form-control" %>
</div>
<div class="form-group">
<%= f.password_field :password, :placeholder => "Password", class: "form-control" %>
</div>
<%= f.submit 'Login', class: "btn btn-default" %>
<% end %>
</li>
<% end %>
<li>
<li><%= link_to "New User", new_user_path %></li>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<li><%= link_to 'Opinions', profile_path %></li>
</li>
<li>
<li><%= link_to 'About',contact_path %></li>
</li>
<li>
<li><%= link_to 'Contact', contact_path %></li>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
次は私のユーザーコントローラ
def new
@user = User.new
end
def show
@user = User.find_by_id(session[:user_id])
end
def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Account Created. Please Login"
redirect_to profile_path
else
flash[:danger] = "Please fill in all your information"
render :new
end
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to @user
flash[:success] = 'User profile successfully updated.'
else
render :edit
end
end
def profile
end
であり、これは、あなたのCURRENT_USERヘルパーメソッドを説明していないとして、それが答えに少し難しいセッションコントローラ
def create
user = User.find_and_authenticate_user(user_params)
if user
session[:user_id] = user.id
flash[:success] = "You are logged in."
#redirect_to refers to a get command by default as it is
#the only command to display. *_path is a combination of
#the RESTful actions
redirect_to profile_path
else
flash[:danger] = "Credentials Invalid!!"
redirect_to login_path
end
end
def destroy
session[:user_id] = nil
flash[:success] = "User logged out!!"
redirect_to root_path
end
form_tagで試してみて、電子メールとパスワードを渡して認証/作成してみませんか? –
'<%= form_for resource、次のように試してください:resource_name do | f | %> ' – Pavan
元のコードを少し編集しました。私はまだform_tagを試していますか? – DGJH