find_or_create在Rails中不起作用

spe*_*tro 2 ruby ruby-on-rails

我有一个非常简单的应用程序.所有这个应用程序需要做的是检查用户名是否存在.如果是,则重定向到用户.如果它不存在,请根据输入的用户名创建新用户并重定向到新用户.新用户永远不会出于某种原因创建,但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
Run Code Online (Sandbox Code Playgroud)

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 %>
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

And*_*man 7

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

那是:

@u = User.find_or_create_by_name(params[:user][:name])
Run Code Online (Sandbox Code Playgroud)