2017-09-24 77 views
-1

我想在模态(而不是打开一个单独的页面)的登录页面。我正在使用宝石设计来创建帐户。 在视图/布局/ application.html.erb,我创建的代码调用的模式:Ruby on Rails /宝石设计/登录页面模式

<div id="openModal" class="modalDialog"> 
    <div> 
    <a href="#close" title="Close" class="close">X</a> 
    <%=render 'devise/sessions/newsession'%> 
</div> 
</div> 

然后在视图/设计/会话/ _newsession.html.erb

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> 

    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.email_field :email, autofocus: true %> 
    </div> 

    <div class="field"> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password, autocomplete: "off" %> 
    </div> 

    <div class="actions"> 
    <%= f.submit "Log in" %> 
    </div> 
<% end %> 

<%= render "devise/shared/links" %> 

我我收到以下错误信息:

未定义的局部变量或方法'资源”为<#:0x007fafd8bc60f8>

看起来devise在页面application.html.erb中无法识别。

你知道错误来自哪里吗?

回答

0

在过去使用这个,真是棒极了:

<div class="modal custom fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> 
      &times;  
     </button> 
     <h2 class="text-center">Connexion</h2> 
     </div> 
     <div class="modal-body"> 
     <%= form_for(:user, :url => session_path(:user)) do |f| %> 
      <div class="email-container"> 
      <%= f.text_field :email, :class =>"form-control",placeholder: "Email", value:"" %> 
      </div> 
      <div class="password-container"> 
      <%= f.password_field :password,:label =>"Password", :class =>"form-control", placeholder:"Password", value:""%> 
      </div> 
      <%= f.submit 'Login', :class =>"form-control" %> 
      <%= f.check_box :remember_me, label: "Remember me", value: "true" %> 
      <%= f.label :remember_me %> 
     <% end %> 
     </div> 
    </div> 
    </div> 
</div> 
0

当你渲染它使用未从“外面”有一项控制器初始化resourceresource_name变量登录表单你可以做的是将它们添加到ApplicationHelper文件中,以便能够从当前控制器或其他任何控制器中使用它们。

尝试编辑您的帮助文件中添加resourceresource_namedevise_mapping

module ApplicationHelper 
    def resource_name 
    :user 
    end 

    def resource 
    @resource ||= User.new 
    end 

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

我想补充的是,如果你想呈现会话#新的视图文件,你可以简单地说,使这个文件作为render file: 'devise/sessions/new'如果您已经运行了devise:views命令,这将帮助您维护一个表单而不是创建一个新表单,当然,这只是一个建议。