使用带有Haml和partials的多部分形式

时间:2017-12-11 13:42:09

标签: ruby-on-rails forms haml

我有一个表格分为两部分(第二部分根据用户的第一选择显示)。请注意,第二部分是部分的。这两部分必须发送到同一个控制器。 使用Haml,如何只使用一个提交按钮将所有参数发送到控制器?

ps:我在这里使用form_tag

Main file 
= form_tag({url: users_search_path}, id:'form1') do
    label
      = radio_button_tag 'user_type', 'Requestor', false, id: "radio-requestor"
      = label_tag 'radio-requestor', "Demandeur"
    label
      = radio_button_tag 'user_type', 'Contributor', false, id: "radio-contributor"
      = label_tag 'radio-contributor', 'Contributeur

.contributor_form
  = render partial: 'contributor_search_form'

.requestor_form.hidden
  = render partial: 'requestor_search_form'

----------------------------------------------

2nd part (partial contributor_search_form)

= form_tag({url: users_search_path}, id:"form2") do 
    label
      = check_box_tag 'prof', 'prof', false, id: 'prof'
      = label_tag 'prof', 'Prof'
    label
      = check_box_tag 'ticket', 'ticket', false, id: 'ticket'
      = label_tag 'ticket', "Ticket"
     = submit_tag "Afficher les résultats"

1 个答案:

答案 0 :(得分:1)

  • 如果您想一次性提交所有内容,请不要使用2 I = M.*exp(j.*P)
  • 如果您希望视图更改基于没有服务器的用户交互,则必须通过 Javascript
  • 进行

正如我猜的那样,你希望控制器中的param接收看起来像

form_tag

所以你可以在不{ user_type: "Requestor", prof: true, ticket: false } 作为

的情况下编写部分内容
form_tag

您的主文件正在呈现部分视图

# contributor_search_form
label
  = check_box_tag 'prof', 'prof', false, id: 'prof'
  = label_tag 'prof', 'Prof'
label
  = check_box_tag 'ticket', 'ticket', false, id: 'ticket'
  = label_tag 'ticket', "Ticket"
 = submit_tag "Afficher les résultats"

注意部分表单已在内部呈现主窗体

现在用# Main file = form_tag({url: users_search_path}, id:'form1') do label = radio_button_tag 'user_type', 'Requestor', false, id: "radio-requestor" = label_tag 'radio-requestor', "Demandeur" label = radio_button_tag 'user_type', 'Contributor', true, id: "radio-contributor" = label_tag 'radio-contributor', 'Contributeur .contributor_form = render partial: 'contributor_search_form' .requestor_form.hidden = render partial: 'requestor_search_form'

编写一些Javascript
  • 当用户选择jQuery时,显示Requestor,反之亦然.requestor_form
  • 仅在显示的区域内提交字段,然后您必须在隐藏时禁用字段。

这是一个例子

Contributor