Я не думаю, что есть способ, чтобы получить именно что вы ищете без переопределения form_for. Или написать свою собственную версию.
Вы можете приблизиться к FormBuilders или Partials или Помощникам, но ни одно из этих понятий не позволит вам делать то, что вы хотите сделать.
FormBuilder позволит вам определять методы, которые нужно вызвать в форме, например, подтвердить и отредактировать, но они будут частью одной и той же формы. Если вы не создадите две формы.
В соответствующем хелперов файле: Использование
class ExampleFormBuilder < ActionView::Helpers::FormBuilder
def confirm
hidden_field(:submission_state, :value => "confirmed") + "\n" + submit "Post"
end
def edit
hidden_field(:submission_state, :value => "edit_requested") + "\n" + submit "Edit"
end
end
Пример:
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.confirm
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.edit
При использовании с частичным вы могли бы сделать что-то вроде этого
парциальное:
- form_for [@posts,@comments], :builder => ExampleFormBuilder do |f|
= f.send(action)
vie w:
= render :partial => :confirmation_for, :locals => {:action => :confirm}
= render :partial => :confirmation_for, :locals => {:action => :edit}
Затем вы можете объединить оба частичных вызова в другой частичный. Но это слишком далеко.