0

我正在将Devise添加到我的应用程序中。一切似乎工作正常,但我很努力地签署和注册页面到我的主页上的jQuery容器。我尝试直接粘贴表单,但是随着对设计使用表单的资源调用,我得到了“未定义的方法”错误。在Devise中使用content_for部分内部

<div class="widget"> 
    <div id="tab-container"> 
     <ul> 
    <li><a href="#create">Create Account</a></li> 
    <li><a href="#signin">Sign In </a></li></ul> 
<div id="create"> 

<%= yield :signup %> 
    </div> 
<div id="signin" style="height: 105px;"> 
    <ul> 
    <%= yield :signin %></ul> 
</div> 
    </div> 
    </div> 

<% content_for :document_ready do %> 
    $('#tab-container').easytabs(); 
<% end %> 
</script> 

我的注册内容

<h2>Sign up</h2> 
    <% content_for :signup do %> 

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

    <div><%= f.label :email %><br /> 
    <%= f.email_field :email %></div> 

    <div><%= f.label :username %><br /> 
    <%= f.text_field :username %></div> 

    <div><%= f.label :password %><br /> 
    <%= f.password_field :password %></div> 

    <div><%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %></div> 

    <div><%= f.submit "Sign up" %></div> 
    <% end %> 
    <% end %> 

和我的登录内容

<h2>Sign in</h2> 
    <% content_for :signin do %> 

    <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do 
    |f| %> 
<div id="login_form"> 
<div><%= f.label :email %><br /> 
    <%= f.email_field :email %></div> 

<div><%= f.label :password %><br /> 
<%= f.password_field :password %></div> 

<% if devise_mapping.rememberable? -%> 
<div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div> 
<% end -%> 

    <div><%= f.submit "Sign in" %></div> 
    </div> 
<% end %> 
<% end %> 

难道不使用content_for内的部分是一个好主意?在调用tab容器之前,yield是不会呈现的?提前致谢!

回答

1

在此处找到答案Devise form within a different controller

添加到您的应用助手

def resource_name 
    :user 
end 

def resource 
    @resource ||= User.new 
end 

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