2017-09-24 113 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命令,這將幫助您維護一個表單而不是創建一個新表單,當然,這只是一個建議。