0

AJAXを使用して、メンバーモデルに対してdevise 2.2.0を使用して作成したサインアップ/サインインフォームをレンダリングしようとしています。ここで、元のデバイスの SessionsController を変更する代わりに、format.js を返すために、「devise/sessions/new」テンプレートをレンダリングするためだけの新しいコントローラーを作成しました (format.html は単にデバッグ用であることに注意してください)。目的) - 以下のコードを参照してください。

class SessionsAjaxController < ApplicationController
def new
    @member = Member.new
    respond_to do |format|
            format.html { render :template => 'devise/sessions/new', :locals =>  {  :resource => @member,  :resource_name => Member } }                       
            format.js  { render :template => 'devise/sessions/new',  :layout => false, :locals =>  {  :resource => @member,  :resource_name => Member} }                          
    end  
end

「/sessions_ajax/new」に直接移動しようとしたとき、または AJAX からロードしようとしたときに、次のエラーが発生しました。

undefined method `email' for #<Class:0x410e608>

エラーは new.html.erb の「11行目あたり」を指しています

10: <%= f.label :email, "EMAIL" %><br />    
11: <%= f.email_field :email, :autofocus => true %>

resource と resource_name を :locals として正しく渡しているので、ここで何が間違っているのかよくわかりません。何か案は?

ありがとう!

4

1 に答える 1

0

から継承する必要がありDevise::SessionsControllerます。

于 2013-04-11T16:26:10.727 に答える