我有一个非常简单的应用程序。所有这个应用程序需要做的是检查用户名是否存在。如果是,则重定向到用户。如果它不存在,请根据输入的用户名创建新用户并重定向到新用户。新用户永远不会出于某种原因创建,但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 %>
任何帮助都将不胜感激。
答案 0 :(得分:7)
Rails会将整个表单打包到params[:user]
中,所以你真的想要params[:user][:name]
那是:
@u = User.find_or_create_by_name(params[:user][:name])