Ruby on Rails У меня есть две формы. Как переместить тег отправки одной формы в другую форму? - PullRequest
0 голосов
/ 29 июля 2011

У меня есть две формы:

= form_for @form_one, :url => form_path do |f|
  = f.hidden_field :promotion_id
  = f.label :page_title, 'After Like: Page Title'
    = f.submit 'Update', :class => 'smBlueButton'

= render :partial => 'form_two'

Как переместить тег «Отправить» из формы 1 ниже формы 2, где тег «Отправить» формы 2 отображается перед формой 1?

Этоне работает:

   = form_for @form_one, :url => form_path do |f|
      = f.hidden_field :promotion_id
      = f.label :page_title, 'After Like: Page Title'
    = render :partial => 'form_two'
      = f.submit 'Update', :class => 'smBlueButton'

1 Ответ

3 голосов
/ 30 июля 2011

Хорошо иметь 2 тега для отправки, но вы можете иметь только одну форму.Оба тега submit будут отправлены обратно в действие контроллера форм, как определено в объявлении form_for.Все, что вам нужно сделать в действии контроллера, это проверить параметр коммита (params[:commit]) для значения текста кнопки и действовать соответствующим образом в условии, основанном на этом значении.

Поэтому удалите form_for из частичного 2 (Возможно, здесь вместо этого можно использовать fields_for), переместите кнопку отправки в form1, где вы хотите, и проверьте хэш параметров фиксации для соответствующего значения

например,

def update
  if params[:commit] == 'Update form 1'
    #do something
  elsif params[:commit] == 'Update form 2'
    #do something else
  else
    #Rails an error - You have not set the right values in your form submit buttons
  end
end

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

...