gpt4 book ai didi

ruby-on-rails - Rails 3 - 一起设计注册和登录 View (多个重定向)

转载 作者:行者123 更新时间:2023-12-03 08:29:25 25 4
gpt4 key购买 nike

我正在尝试在同一 View 和根 url 处设置注册和登录页面。

我通过更改用户/ session /新 View (设计生成的 View )来放入 2 个表单(注册和登录)来做到这一点。

到目前为止一切顺利,但我有两个问题:

首先,当我尝试注册并获得无效数据时,它会将我重定向到 mywebapp/users,而它应该重定向到同一页面 mywebapp/(root_path)。

其次,如果我尝试登录,它会成功执行此操作,并重定向到正确的 url(也包括 root_path),但它会一遍又一遍地尝试重定向到它,并且我收到错误“重定向到 http://localhost 的次数太多| ……”。

我的路线.rb:

devise_for :users do
root :to => "devise/sessions#new"
end

我的用户/ session /new.rb:
<% if user_signed_in? %>
<%= render 'users/sessions/home' %>
<% else %>
<%= render 'users/sessions/login' %>
<% end %>

我的 _login.rb 部分:
 <h1>Index</h1>
<hr/>

<h2>Log in</h2>
<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
<table>
<tr>
<td><%= f.label :email %></td>
<td><%= f.email_field :email %></td>
</tr>
<tr>
<td><%= f.label :password %></td>
<td><%= f.password_field :password %></td>
</tr>
</table>

<% if devise_mapping.rememberable? %>
<%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end %>

<div><%= f.submit "Log in" %></div>
<% end %>

<% if devise_mapping.recoverable? %>
<%= link_to "Forgot your password?", new_password_path(resource_name) %><br/>
<% end %>

<hr/>

<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>

<table>
<tr>
<td><%= f.label :first_name %></td>
<td><%= f.text_field :first_name %></td>
</tr>
<tr>
<td><%= f.label :last_name %></td>
<td><%= f.text_field :last_name %></td>
</tr>
<tr>
<td><%= f.label :email %></td>
<td><%= f.email_field :email %></td>
</tr>
<tr>
<td><%= f.label :password %></td>
<td><%= f.password_field :password %></td>
</tr>
<tr>
<td><%= f.label :password_confirmation %></td>
<td><%= f.password_field :password_confirmation %></td>
</tr>
</table>

<div><%= f.submit "Sign up" %></div>
<% end %>

我的 _home 部分现在只是一个空 View 。

提前致谢。

最佳答案

第一个问题 : 请使用rails generate devise:views命令将在 views/devise 文件夹 ( configuring views ) 中为您创 build 计 View 。您可以将渲染部分放在 View 中:
views/devise/registrations/new.html.erb (报名)


views/devise/sessions/new.html.erb (登入)。

第二题 :您将 root_path 设置为 devise/sessions#new,如果您登录正确的设计,请尝试一次又一次地重定向到 root_path。您需要设置另一个 root_path 并且如果您想拒绝未经身份验证的用户的访问,您可以将过滤器添加到 Controller ( Devise documentation )并设计重定向这些用户以为您验证页面:
before_action :authenticate_user! ( rails 3)或 before_filter :authenticate_user! ( rails 3)

关于ruby-on-rails - Rails 3 - 一起设计注册和登录 View (多个重定向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9025394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com