だから私は別のコントローラー内でDeviseフォームとほとんど同じことをしようとしています
ログインフォームを別ページに工夫する
私は持っているヘルパーモジュールを持っています
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
しかし、行で nil:NilClass の未定義のメソッド `[]' を取得しています
<%= f.email_field :email, :autofocus => true %></div>
<% raise resource.inspect %> を views/devise/sessions/new.html.erb に入れました
Home#index #User not initializedで RuntimeError が発生しました
<h2>Sign in</h2>
<%= form_for(resource, :as => resource_name, :url => user_session_path(resource_name)) do |f| %>
<% raise resource.inspect %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<% if devise_mapping.rememberable? -%>
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
<% end -%>
<div><%= f.submit "Sign in" %></div>
<% end %>
<%= render "devise/shared/links" %>
ヘルパーモジュールでもこれを試しました
def resource_name
:user
end
def resource
@resource = User.new
end
def devise_mapping
@devise_mapping = Devise.mappings[:user]
end
Home#index には、次のものがあります。
<div class="loginform" id="login">
<%= render :file => "devise/sessions/new" %>
</div>
views/devise/sessions/new.html.erb edits が
<%= form_for(:user, :as => @user, :url => user_session_path(@user)) do |f| %>
<% raise resource.inspect %> を views/devise/sessions/new.html.erb に戻した場合
それでも #User not initialized> が表示されます
user.rb 内
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
application_controller.rb 内
class ApplicationController < ActionController::Base
protect_from_forgery
helper :all
end
「レール」、「3.2.11」を使用
ヘルパー モジュールがリソースに対して想定どおりに機能しない理由がわかりません。誰かが理由を理解するのを手伝ってくれますか? なぜ「nil:NilClass の未定義メソッド `[]'」を取得するのですか?
前もって感謝します。