Rails 条件 form_form 控制器和动作参数
Rails conditional form_form controller and action parameters
也许我在这里违背了惯例,但我有一个由多个控制器使用的表单,我想自定义提交操作的发送位置。
我试过:
<% if local_assigns.has_key? :form_type %>
<% form_type = local_assigns[:form_type] %>
<% end %>
<% if local_assigns.has_key? :form_action %>
<% form_action = local_assigns[:form_action] %>
<% end %>
<%= form_for :my_form, url: { controller: form_type, action: form_action } do |f| %>
# OR #
<%= form_for :my_form, url: { controller: "#{form_type}", action: "#{form_action}" } do |f| %>
以及类似的内容:
<% if form_type == 'type_A' %>
<%= form_for :my_form, url: { controller: 'controller_A', action: 'action_A' } do |f| %>
<% elsif form_type == 'type_B' %>
<%= form_for :my_form, url: { controller: 'controller_B', action: 'action_B' } do |f| %>
<% elsif form_type == 'type_C' %>
<%= form_for :my_form, url: { controller: 'controller_C', action: 'action_C' } do |f| %>
<% end %>
两个都不起作用,第二个原因显而易见。任何解决方法?我应该改用 form_tag 吗?并非我所有的形式都与对象相关联。我还试图避免将此模板嵌套在另一个模板中(外部模板包含正确的 form_for 参数)。作为最后的手段,我想我可以使用原始 html 表格。
奖金......还没有到那里,但我可能还需要修改 form_for 键,在这种情况下 'my_form' (上文)。
为常用表格示例制作一个常用部分
_common_partial.html.erb
<%= form_for object, url: url do |f|%>
#.. form fields
<%end%>
有条件地渲染这个部分
<% if form_type == 'type_A' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% elsif form_type == 'type_B' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% elsif form_type == 'type_C' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% end %>
也许我在这里违背了惯例,但我有一个由多个控制器使用的表单,我想自定义提交操作的发送位置。
我试过:
<% if local_assigns.has_key? :form_type %>
<% form_type = local_assigns[:form_type] %>
<% end %>
<% if local_assigns.has_key? :form_action %>
<% form_action = local_assigns[:form_action] %>
<% end %>
<%= form_for :my_form, url: { controller: form_type, action: form_action } do |f| %>
# OR #
<%= form_for :my_form, url: { controller: "#{form_type}", action: "#{form_action}" } do |f| %>
以及类似的内容:
<% if form_type == 'type_A' %>
<%= form_for :my_form, url: { controller: 'controller_A', action: 'action_A' } do |f| %>
<% elsif form_type == 'type_B' %>
<%= form_for :my_form, url: { controller: 'controller_B', action: 'action_B' } do |f| %>
<% elsif form_type == 'type_C' %>
<%= form_for :my_form, url: { controller: 'controller_C', action: 'action_C' } do |f| %>
<% end %>
两个都不起作用,第二个原因显而易见。任何解决方法?我应该改用 form_tag 吗?并非我所有的形式都与对象相关联。我还试图避免将此模板嵌套在另一个模板中(外部模板包含正确的 form_for 参数)。作为最后的手段,我想我可以使用原始 html 表格。
奖金......还没有到那里,但我可能还需要修改 form_for 键,在这种情况下 'my_form' (上文)。
为常用表格示例制作一个常用部分
_common_partial.html.erb
<%= form_for object, url: url do |f|%>
#.. form fields
<%end%>
有条件地渲染这个部分
<% if form_type == 'type_A' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% elsif form_type == 'type_B' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% elsif form_type == 'type_C' %>
<%= render 'path/common_partial', object: form_for_object, url: path_to_which_form_be_submitted%>
<% end %>