如何制作未检查的导轨单选按钮?

时间:2012-08-01 05:40:46

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我正在尝试使用以下方式在轨道中制作一个单选按钮:

<%= f.radio_button :category_id, "1" %>

问题是默认情况下已经检查过了,我不希望用户能够在没有明确单击一个表单的情况下提交表单(基本上我希望在页面加载时取消选中它)

问题是如果它出错了,并且页面重新加载,如果我添加:checked => false似乎覆盖了用户在收到错误之前输入的内容,并且他们必须再次单击它。

谢谢!

2 个答案:

答案 0 :(得分:0)

如果要关联已选中按钮的状态,则必须以某种方式保存该信息并将该信息返回到视图。 您可以手动执行此操作,或让radio_button按照apidock

中的说明处理该操作
# Let's say that @post.category returns "rails":
radio_button("post", "category", "rails")
radio_button("post", "category", "java")
# => <input type="radio" id="post_category_rails" name="post[category]" value="rails" checked="checked" />
#    <input type="radio" id="post_category_java" name="post[category]" value="java" />

答案 1 :(得分:0)

FormBuilder助手(每次在块参数上调用输入法时使用的助手哦form_for)将始终反映相应属性的当前值。所以:

<%= form_for @post do |f| %>
  <%= f.radio_button :category_id, "1" %>

...只会在@post.category_id == "1"

时进行检查

听起来你想要做的就是在渲染视图之前确保模型的状态是正确的。