我看到了一些关于使用帮助器为所有页面设置设计的教程,但我无法达到相同的结果,这是我的代码。
我正在关注本教程,但它不起作用:https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app
我的页面有一个控制器(现在我只有登录页面)
pages_controller.rb
class PagesController < ApplicationController
def landing
end
end
我在views/layouts/shareds/_header.html.erb
中有一个标题部分,我在调用设备注册/登录。
<div class="col-md-5">
<div class="signup-header wow fadeInUp">
<h3 class="form-title text-center">GET STARTED</h3>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %>
</div>
<div class="field">
<%= f.label :password %>
<% if @minimum_password_length %>
<em>(<%= @minimum_password_length %> characters minimum)</em>
<% end %><br />
<%= f.password_field :password, autocomplete: "off" %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %>
</div>
<div class="actions">
<%= f.submit "Sign up" %>
</div>
<% end %>
</div>
</div>
按照我做的教程:
application_helper.rb
module ApplicationHelper
helper_method :resource_name, :resource, :devise_mapping
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
application_controller.rb
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
include ApplicationHelper
end
我不断收到此错误:针对ApplicationHelper的未定义方法`helper_method':模块
答案 0 :(得分:0)
删除helper_method
:
#app/helpers/application_helper.rb`
module ApplicationHelper
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
end
正如docs州......
将控制器方法声明为帮助程序。
这意味着采用controller
方法并将其提供给您的观点:
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
helper_method :current_user
private
def current_user
...
end
end
#app/views/layouts/application.html.erb
<%= link_to "Profile", user_profile_path if current_user %>
要添加评论,helper methods(尤其是Devise
)可以为您的观看次数提供支持功能:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
如上所示,resource
&amp;通过帮助程序提取resource_name
个值。