0

私はこのhamlファイルを持っています:

= content_for :page_title do
  = t :page_title_login
= content_for :primary_content do
  #login_box
    .span6
      #traditional-login
        %hgroup
          %h3= t :heading_account_login
        = render "devise/sessions/form"

    .span4

= content_for :before_closing_body_tag do
  configure_login_form(#{request.xhr?.to_s.downcase});

それは私のapp/views/mobile/sessions/new.haml.html道にあります。

次のエラーが発生します。

Showing /Users/alexgenadinik/projects/cmply/cmply-app/app/views/devise/sessions/_form.html.haml where line #1 raised:

undefined local variable or method `resource' for #<#<Class:0x148213358>:0x14820dac0>

しかし、この行をコメントアウトすると:

= render "devise/sessions/form"

ページをレンダリングしますが、実際のフォームはありません。その行が必要だと思いますが、エラーを発生させずにその行を追加する方法がわかりません。

これが私のコントローラーです:

class Mobile::SessionsController < ApplicationController
  def create
    redirect_to home

  end

  def new
    redirect_to home
  end
end

私が間違っているかもしれないことは何ですか?

ありがとう!!

4

1 に答える 1

1

そのフォームのパーシャルは、resource見つけることができないローカル変数を使用します。

その変数を render 呼び出しに渡す必要があります。

= render "devise/sessions/form", :locals => {:resource => resource}

他の変数が欠落している可能性もあります。私のnew.html.haml言及もresource_namedevise_mapping. たぶん、それらの変数も渡す必要があります。

パーシャルのレンダリングに関するドキュメントをご覧ください。

ところで、これは制御呼び出しであるため、HAML には はあり- content_forません。= content_for

于 2012-04-18T14:40:20.527 に答える