Ruby on rails 查找或创建不在Rails中工作
我有一个非常简单的应用程序。这个应用需要做的就是检查用户名是否存在。如果有,则重定向到用户。如果不存在,请根据输入的用户名创建新用户,并重定向到新用户。由于某些原因,从未创建新用户,但find_或_create行在rails控制台中工作。代码如下: 用户_controller.rbRuby 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])
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是否可能是散列,但决定不是。脸掌。很有魅力,谢谢!