Ошибочное значение параметров фиксации в хэше params - PullRequest
0 голосов
/ 26 сентября 2011

Я использую помощник по форме submit_tag в одном из своих приложений. Значение этой кнопки отправки должно изменяться динамически. Два возможных значения для этой кнопки отправки - Save и Update. Итак, по мнению, я сделал что-то вроде следующего:

<% temp = 0 %>
<% text = '' %>
<% temp =  ActivityLog.find_by_sql("SELECT COUNT(id) AS cnt FROM logs WHERE id > 0")%>
<% text = temp[0][:count].to_i > 0 ? 'Update' : 'Save' %>

<!-- other html contents -->

<%= submit_tag text, :id=>"submitBtn"+i.to_s, :onclick=>"submit_button_clicked(this)"%>

Теперь, когда я запускаю представление в браузере, я вижу желаемый эффект. Но контроллер rails получает ошибочное значение для опций commit в хэше params.

Например, когда значение text оценивается как Save, я получаю в Firebug следующее:

<input type="submit" value="Save" style="" onclick="submit_button_clicked(this)" name="commit" id="submitBtn3">

Но raise params.inspect в связанном контроллере показывает следующее:

{"commit"=>"Update",
 "authenticity_token"=>"",
 "time"=>{"292"=>"3.0",
 "2"=>"1.0",
 "456"=>"4.0"},
 "date"=>"2011-09-20"}

См., Хотя значение кнопки Submit отображается в HTML как Save, контроллер rails показывает значение commit как Update. Что здесь не так?

1 Ответ

0 голосов
/ 26 сентября 2011

Если вы используете помощники Rails, он предоставляет простой способ выбора текста на кнопке в соответствии с типом формы:

<%= form_for @activity do |f| %>
  <%= f.label :title %>:
  <%= f.text_field :title %><br />

  <%= f.submit %>
<% end %>

Когда значение не указано, оно проверяет, является ли объект новым ресурсом или нет, чтобы создать правильную метку. В приведенном выше примере, если @activity является новой записью, она будет использовать «Создать активность» в качестве метки кнопки отправки, в противном случае она будет использовать «Обновить активность».

P.S. пожалуйста, не используйте SQL в ваших взглядах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...