Ruby on rails 查找或创建不在Rails中工作

Ruby on rails 查找或创建不在Rails中工作,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个非常简单的应用程序。这个应用需要做的就是检查用户名是否存在。如果有,则重定向到用户。如果不存在,请根据输入的用户名创建新用户,并重定向到新用户。由于某些原因,从未创建新用户,但find_或_create行在rails控制台中工作。代码如下: 用户_controller.rb def new @user = User.new end def create @u = User.find_or_create_by_name(params[:name])

我有一个非常简单的应用程序。这个应用需要做的就是检查用户名是否存在。如果有,则重定向到用户。如果不存在,请根据输入的用户名创建新用户,并重定向到新用户。由于某些原因,从未创建新用户,但find_或_create行在rails控制台中工作。代码如下:

用户_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 %>




任何帮助都将不胜感激。

Rails将在
params[:user]
中打包整个表单,因此您确实需要
params[:user][:name]

即:

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

您的应用程序中是否有任何错误?如果它没有创建用户,那么您应该在该重定向上得到一个错误。如果是,则当保存到数据库失败时,应该会出现错误。另外,确保您的应用程序运行时使用了此代码;重新启动将消除任何疑虑。用户只需创建一个名称?没有其他验证?天啊,我想知道params是否可能是散列,但决定不是。脸掌。很有魅力,谢谢!