find_or_create не работает в Rails - PullRequest
2 голосов
/ 15 января 2011

У меня очень простое приложение. Все, что нужно этому приложению, это проверить, существует ли имя пользователя. Если, если да, перенаправить к пользователю. Если это не существует, создайте нового пользователя согласно введенному имени пользователя и перенаправьте к новому пользователю. По какой-то причине новые пользователи никогда не создаются, но строка 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 Ответ

7 голосов
/ 15 января 2011

Rails собирается упаковать всю форму в params[:user], так что вы действительно хотите params[:user][:name]

То есть:

@u = User.find_or_create_by_name(params[:user][:name])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...