Rails 3 - формы, настраиваемая кнопка отправки на основе действия?

В настоящее время у меня есть пара форм, в которых я пытаюсь изменить кнопку, которая отправляет их, в зависимости от того, нахожусь ли я на редактировании или новое действие. У меня были созданы две формы, но это плохо пахло, и теперь я использую только один партиал формы.

В конце моего партиала у меня есть что-то вроде этого в конце моих форм:

<p>
  <% if controller.action_name == 'new' %>
  <%= f.submit "Create", :class => "pink_button"%> or
  <% elsif controller.action_name == 'edit' %>
  <%= f.submit "Update", :class => "pink_button"%> or
  <% end %>
  <%= link_to "cancel", :back %>
  </p>  

Таким образом, если я при создании нового, на кнопке написано «Создать», а если это обновление, которое пользователь пытается завершить, на кнопке написано «Обновить». Это отлично работает до тех пор, пока форма не будет отправлена ​​и проверка не завершится.

В моем контроллере я ловлю то, что действительно терпит неудачу, вот так:

def update
    @list = current_user.lists.find(params[:id])    

    if @list.update_attributes(params[:list])
      redirect_to list_path(@list), :notice => "List '#{@list.name}' updated."
    else
      render :action => 'edit'
    end
  end

Таким образом, форма просто повторно визуализируется. Проблема в том, что я больше не нахожусь на пути редактирования. Это означает, что моя кнопка формы больше не отображается.

Есть ли соглашение о том, что я пытаюсь сделать?

Спасибо

6
задан Kombo 11 August 2011 в 19:18
поделиться