设计要求" router_name"部分

时间:2015-02-28 00:01:50

标签: ruby-on-rails-4 devise omniauth

您好我在我的应用程序的索引页面上创建了一个Devise登录表单

错误:“nil的未定义方法`router_name':NilClass”

    <%= form_for("user", :url => new_user_session_path, :html => {:class => "cd-form"}) do |f| %>
      <%- flash.each do |name, msg| -%>
        <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
      <%- end -%>
      <span class="cd-error-message">Error message here!</span>
      <div class="field">
        <%= f.label :email, :class => 'image-replace cd-username' %><br />
        <%= f.email_field :email, :class => 'full-width has-padding has-border', autofocus: true %>
      </div>

      <div class="field">
        <%= f.label :password %>
        <% if @validatable %>
        <em>(<%= @minimum_password_length %> characters minimum)</em>
        <% end %><br />
        <%= f.password_field :password, :class => 'full-width has-padding has-border', autocomplete: "off" %>
      </div>

      <div class="field">
        <%= f.label :password_confirmation, :class => 'image-replace cd-password-2' %><br />
        <%= f.password_field :password_confirmation, :class => 'full-width has-padding has-border', autocomplete: "off" %>
      </div>

      <%= render "users/shared/links" %>
      <div class="actions">
        <%= f.submit "Sign up", :class => 'full-width has-padding' %>
      </div>
    <% end %>

我按照指南: https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

我没有使用可安装的引擎,也不打算使用。

按照其他指南,我也把它放在我的控制器中

def resource_name
    :user
end

def resource
    @resource ||= User.new
end

def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
end
...

添加此项以抑制错误

...
def router_name
end

我认为不需要在devise.rb

中配置它

2 个答案:

答案 0 :(得分:0)

您已声明

  

&lt;%= form_for(&#34;用户&#34;

(字符串)改为

  

&lt;%= form_for(:user

(对象)

答案 1 :(得分:0)

我通过将<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/red" android:state_pressed="true"/> <item android:drawable="@android:color/red" android:state_hovered="true"/> <item android:drawable="@android:color/transparent"/> </selector> 重命名为/views/user(添加/views/users)来导致同样的错误。

更改它解决了这个问题。

这可能不会为所有人解决,但可能对某些人有帮助。