【发布时间】:2016-01-15 17:39:08
【问题描述】:
我正在尝试创建自定义表单辅助方法(用于自定义 HTML 复选框标记),但遇到了一些问题。我创建了以下助手,wrapped_check_box
module FormHelper
class ActionView::Helpers::FormBuilder
include ActionView::Helpers::FormTagHelper
include ActionView::Helpers::FormOptionsHelper
def wrapped_check_box(name, options = {})
raw "<div class='checkbox-wrapper'>" + \
check_box_tag(@object_name, name, options) + \
"<span class='checkbox-check'></span>" + \
"</div>"
end
end
end
示例用法:
<%= f.wrapped_check_box :receives_updates %>
当我使用它时,在这个来自新 User 模型的示例中,我得到以下输出:
<div class="checkbox-wrapper">
<input type="checkbox" name="user" id="user" value="receives_updates" checked="checked">
<span class="checkbox-check"></span>
</div>
这里有两个问题:
- 即使我传入
checked: false,也会自动检查该字段 - 这似乎是不正确的
id值,它与<label>标记以及一般所有内容都混淆了
我一直在关注各种文章来拼凑这个,但显然我做错了什么。任何帮助表示赞赏:)
更新
我通过更新check_box_tag 方法取得了一些进展:
check_box_tag("#{@object_name}[#{name.to_s}]", 1, options)
现在输出:
<input type="checkbox" name="user[receives_updates]" id="user_receives_updates" value="1" checked="checked">
这正是我想要的,但不幸的是它仍然总是输出checked="checked",即使我将它作为假传递。
有什么想法吗?
【问题讨论】:
-
你对
id的期望值是多少 -
@Abhinay 一个普通的
f.check_box将user_receives_updates输出为id,这是正确的值
标签: ruby-on-rails actionview form-helpers