проблема с именем текущего действия - PullRequest
3 голосов
/ 23 марта 2011

Когда я нахожусь в / редактировать действие, я вижу кнопку редактирования, но проблема в том, что если в проверке формы есть ошибка, то она отображает редактирование действия, и я вижу кнопку создания.как я могу это исправить?

<%= form_for(@page) do |f| %>
<% if controller.action_name =="edit" %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>

Ответы [ 4 ]

6 голосов
/ 23 марта 2011
<% if ["edit", "update"].include? params[:action] %>
  <%= f.submit "Update" %>
<% else %>
  <%= f.submit "Create" %>
<% end %>

Лучшее решение - извлечь вашу форму как частичную и отправить в нее локальную переменную с именем кнопки

ваш edit просмотр:

<%= render :partial => "form", :locals => { :button_label => "Edit" } %>

ваш create просмотр:

<%= render :partial => "form", :locals => { :button_label => "create" } %>

ваш _form частичный:

<%= form_for @object ... do |f| %>
  ...
  <%= f.submit button_label %>
<% end %>

UPD

Я думаю, что решение @idlefingers лучше всего подходит для вашей проблемы

5 голосов
/ 23 марта 2011

Вы можете просто использовать f.submit без аргументов. Это создаст такие имена, как «Обновить страницу» и «Создать страницу». Если вы хотите изменить их формулировку, они могут быть установлены в вашем регионе. Никаких условий, никаких шуток с именами действий. Простой.

2 голосов
/ 23 марта 2011

Мое решение:

<%= form_for(@page) do |f| %>
  <%= f.submit(f.object.new_record? ? "Create" : "Update") -%>
<% end %>
2 голосов
/ 23 марта 2011

Попробуйте сделать эту проверку:

<%= form_for(@page) do |f| %>
<% if controller.action_name =~ /update|edit/  %>
<%= f.submit "Update" %>
<% else %>
<%= f.submit "Create" %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...