отправка ввода в params - PullRequest
       0

отправка ввода в params

0 голосов
/ 04 сентября 2010

Я пришел из Grails, и я новичок в Ruby-on-Rails.

Итак, я узнал, что когда вы создаете form_for с таким символом, как: user ("key"), когда отправляетеparams [] получает новый ключ с «: user» и соответствующее значение из него:

<% form_for :user do |form| %>
    <fieldset>
      <legend>Password</legend>

      <label for="current_password"> Current password:</label>
      <%= form.password_field :current_password %>
      <br>

      <label for="password"> New password:</label>
      <%= form.password_field :password %>
      <br>

      <label for="password_confirmation"> Confirm password:</label>
      <%= form.password_field :password_confirmation %>
      <br>
    </fieldset>
    <%= submit_tag "Update", :class => "submit" %>
<% end %>

params [: user => {: current_password => 123,: password => 321,: password_confirmation => 321}], верно?

Ну, проблема в том, что Rails не понимает: current_password и: password_confirmation, я не знаю, если проблема в модели пользователя, не имеют этих атрибутов, только имя, пароль и адрес электронной почты.

Ошибка: неопределенный метод `password_confirmation = 'для #

Есть ли другой способ исправить это, не создавая attr_accessor для обоих символов?Я просто хочу работать с простым ключом внутри действия, как:

if params[:user].password = params[:user].password_confirmation

 do something...

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

params - класс хеша.На самом деле это не простой класс Hash, это HashWithIndifferentAccess , который добавляет возможность доступа к хешу с использованием строки и символа за один раз.

Что вам нужно, так это понять http://ruby -doc.org / core / classes / Hash.html , а также прочитайте некоторые примеры на http://guides.rubyonrails.org/

. В вашем примере вы также используете присваивание = , а не равное == знакЛучше прочитать некоторые руководства по ruby, прежде чем вы начнете копаться в мире рельсов.

Поэтому исправление вашей ошибки должно выглядеть следующим образом:

if params[:user][:password] == params[:user][:password_confirmation]

Authlogic или Придумай самоцветы делают это сами.Не изобретайте велосипед, пока не обнаружите, что знаете все альтернативы и застряли за стеной.

0 голосов
/ 04 сентября 2010

Параметры вложены в хеш. Итак, вы получите к нему доступ так:

if params[:user][:password] == params[:user][:password_confirmation]
  # do stuff
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...