Rah*_*ess 3 ruby authentication ruby-on-rails devise
我刚刚创建了一个新的rails应用程序并添加了它的设计.为每个登录(users/sign_in)和注册(users/sign_up)页面设置不同的页面是通过设计自己给出的.但我想在我的自定义控制器(欢迎/家庭)的单页中添加登录和注册表单.
而且我真的很困惑用户控制器如何映射到views/devise/..中的页面,并希望在一个屋檐下登录并注销页面.
任何人都可以让我知道如何修改代码来实现这一目标.
而且我真的很困惑用户控制器如何映射到views/devise /中的页面
事实并非如此.
sessions_controller.rb (用于登录/注销)registrations_controller.rb (用于sign_up)passwords_controller.rb (忘了等)confirmations_controller.rb (用于确认)unlocks_controller.rb (对于邀请,我相信)当您调用devise_for路线时,它会创建一系列映射到这些控制器的路径.实际上,您甚至可以覆盖控制器和路径本身:
devise_for :users, path: "auth", controllers: { sessions: "login" }, path_names: { sign_in: 'login', sign_out: 'logout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'register', sign_up: 'cmon_let_me_in' }
Run Code Online (Sandbox Code Playgroud)
这意味着所有devise路由路径实际上都是由Devisegem本身而不是users控制器构成的.
固定
要解决您的问题,您需要参考以下内容 - 在您的应用中随处包括自定义登录表单
具体来说,您需要使用以下内容:
#app/helpers/application_helper.rb
class ApplicationHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
Run Code Online (Sandbox Code Playgroud)
这将使您能够在resource任何地方调用for Devise,这意味着您将能够在应用程序中使用所需的表单.
现在,我强烈推荐的是将您的设计形式保存在同一个地方.不要改变它们.你想把它们称为部分
这是一个例子:http://firststopcosmeticshop.co.uk(登录/注册在顶部):

这是我们之前做的开发应用程序 - 它将登录/注册视图称为部分:
#app/views/layouts/application.html.erb
...
<%= render "devise/sessions/new" %>
Run Code Online (Sandbox Code Playgroud)
你如何设计它将取决于你的CSS.
如果您想了解更多信息,请告诉我们!
| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |