2012-04-18 4 views
0

У меня есть этот файл Haml:Рубин на Rails - ошибка при попытке визуализации формы Разрабатывают логин

= 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 

Любая идея, что я могу делать неправильно?

Спасибо!

+0

Замечание - прежде чем я начал пытаться создать контроллер сессий, по крайней мере, мой логин работал. Я просто удалил свой mobile/sessions/new.html.haml и, по крайней мере, получил ошибку, что контроллер создания не был создан. Затем я создал контроллер создания, и теперь у меня появилась новая ошибка, но по крайней мере кажется, что удаление new.html.haml для мобильных/сеансов было правильным шагом. – GeekedOut

+0

Может ли вы отправить свой контроллер, а также ваш файл _form? –

+0

@ArthurNeves Привет, Артур, я только что разместил свой контроллер. Какой файл _form вы имели в виду? У меня есть mobile/regisrations/new.html.haml тоже - может быть, один? – GeekedOut

ответ

1

Эта форма частичная использует локальную переменную resource, которую не может найти.

Вы должны передать эту переменную вдоль вызова рендеринга.

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

Возможно, вам также не хватает других переменных. Мой new.html.haml упоминает также resource_name и devise_mapping. Может быть, вам тоже придется пройти эти варны.

Взгляните на документацию rendering partials.

BTW, ваш HAML должен иметь - content_for не = content_for, потому что это контрольный вызов.

+0

@ Lass thanks.. вы говорите о файле new.html.haml, который находится в вашем каталоге разработки? Или один за его пределами, который должен использовать каталог devisee? – GeekedOut

+0

Когда я добавляю обратно приложение/views/mobile/sessions/new.html.haml, я получаю эту ошибку в браузере: NameError в Mobile :: SessionsController # new неопределенная локальная переменная или метод 'home 'для # GeekedOut

+0

Да, комментарий HAML был для 'app/views/mobile/sessions/new.haml.html'. Ошибка _home_, потому что у вас есть 'recirect_to home', который кажется неправильным. Вероятно, вы имели в виду 'redirect_to home_path', если у вас есть маршрут с именем _home_ в файле' routes.rb'. Хотя я должен признать, что я не совсем понимаю, чего вы пытаетесь достичь. Кажется, вы описываете несколько ситуаций одновременно. – Laas

Смежные вопросы