find_or_create在Rails中不起作用

时间:2011-01-14 23:20:09

标签: ruby-on-rails ruby

我有一个非常简单的应用程序。所有这个应用程序需要做的是检查用户名是否存在。如果是,则重定向到用户。如果它不存在,请根据输入的用户名创建新用户并重定向到新用户。新用户永远不会出于某种原因创建,但find_or_create行在rails控制台中工作。这是代码:

user_controller.rb

  def new

    @user = User.new

  end


  def create

    @u = User.find_or_create_by_name(params[:name])
    redirect_to @u

  end

new.html.erb

<% form_for(@user) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :Username %><br />
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.submit 'Submit' %>
  </p>
<% end %>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:7)

Rails会将整个表单打包到params[:user]中,所以你真的想要params[:user][:name]

那是:

@u = User.find_or_create_by_name(params[:user][:name])