在Rails中的表单中添加确认复选框与某些属性无关?

时间:2017-04-05 13:11:37

标签: ruby-on-rails

Noob问题! :)

我有一个表单,除了调用some_action之外基本上没有任何意义。我使用表格的原因是因为我们在大型网站上有一个特定的样式。

<%= styled_form_for(@user, :url => some_action_user_path @user)) do |f| %>
    <%= f.save_button %>
<% end %>

我想,因为它是一个表单,我应该可以在那里放一个复选框。除了确认用户确实想要执行此操作之外,它应该没有其他目标。例如。 &#34;是的,我想对用户模型进行some_action&#34;。

我如何制作一个不会真正改变任何属性或影响任何内容的复选框 - 除此之外应检查表单是否提交?

这可能很简单,但根据文档和各种错误消息,我应该提供这样一个属性的参数(我不想要......)

1 个答案:

答案 0 :(得分:1)

form_for旨在处理模型的属性,这是您正在阅读的所有文档都在告诉您。因此,如果您的模型有一个布尔列,您可以轻松地附加一个复选框。

如果您想要一个不遵循此规范的表单(或特定标签),您可以使用这些方法的_tag版本。例如,form_tag或在您的特定情况下为check_box_tag

示例:

<%= styled_form_for(@user, :url => some_action_user_path @user)) do |f| %>
  <%= check_box_tag "do_some_method" %>
  <%= f.save_button %>
<% end %>

注意:如果已选中:do_some_method,您将只获得一个参数条目。如果你想得到一个参数,你必须在它之前添加一个hidden_field_tag

<%= hidden_field_tag "do_some_method", "no_dont_do_it" %>
<%= check_box_tag "do_some_method", "yes_do_it" %>

现在,如果选中该复选框,您将params[:do_some_method]设置为"yes_do_it";如果未选中,则不会将params[:do_some_method]设置为"no_dont_do_it"