从不同视图设计sign_up无法保存/创建用户

时间:2014-01-21 13:58:30

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我尝试允许用户直接从我的主页/目标网页输入电子邮件和密码。为此,我遵循了这个例子:

http://pupeno.com/2010/08/29/show-a-devise-log-in-form-in-another-page/

所以我把表单放在我的index.html.erb中并创建了一个welcome_helper.rb,就像文章中所说的那样,因为我的欢迎控制器控制了索引视图的主页。

但是发生的事情是,在点击注册后没有创建/保存用户我在控制台中看到了这一点:

Started GET "/?utf8=%E2%9C%93&authenticity_token=mM52EgyczA4XgutnP37Q3rumj3HuHx8nYNRz5pas6lM%3D&user%5Bemail%5D=alex%2Bneun%40rivalfox.com&user%5Bpassword%5D=[FILTERED]&user%5Bremember_me%5D=0&commit=Sign+in" for 127.0.0.1 at 2014-01-21 14:24:21 +0100
Processing by WelcomeController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"mM52EgyczA4XgutnP37Q3rumj3HuHx8nYNRz5pas6lM=", "user"=>{"email"=>"email@email.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
Rendered welcome/index.html.erb within layouts/application (3.1ms)
Completed 200 OK in 7ms (Views: 6.7ms | ActiveRecord: 0.0ms)

似乎它是一个GET请求,但我不明白为什么,因为路径与正常的Devise Sign Up页面上使用的路径相同。

我有什么想法可以解决这个问题。在我发布的文章中,有人要求提出相同的问题,但没有答案。也无法在网上找到任何东西。

我的index.html.erb看起来像这样:

<div class="col-lg-2 col-md-3 form-container">


<%= 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, :autofocus => true %></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 %>

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

</div>

1 个答案:

答案 0 :(得分:0)

我认为您的:url => registration_path(resource_name)实际上并未指向您的创建操作。

这可能不是最漂亮的解决方案,但请尝试用以下方法替换表单的第一部分:

<%= form_for(resource, :as => resource_name, :url => url_for(:controller => 'resource_controller', :action => 'create_action'), :method => :post) do |f| %>

确保填写正确的控制器和操作名称。

如果这样做有效,您知道这是您网址的问题,那么您可以对现有的网址进行排查:网址选择以查看相应网址的位置(或保留上述解决方案)。