比如这些例子:
text_field(:post, :title, size: 20)
# => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />
text_field(:post, :title, class: "create_input")
# => <input type="text" id="post_title" name="post[title]" value="#{@post.title}" class="create_input" />
text_field(:session, :user, onchange: "if ($('#session_user').val() === 'admin') { alert('Your login cannot be admin!'); }")
# => <input type="text" id="session_user" name="session[user]" value="#{@session.user}" onchange="if ($('#session_user').val() === 'admin') { alert('Your login cannot be admin!'); }"/>
text_field(:snippet, :code, size: 20, class: 'code_input')
# => <input type="text" id="snippet_code" name="snippet[code]" size="20" value="#{@snippet.code}" class="code_input" />
我搞不明白哪些是相对应的,每个都是什么作用。 如果有这方面的文档最好。最好能解释下这些属性为什么会这样。
-- EDIT --
比如 这里 id 和 name 什么作用?有什么差别?
我发现 text_field(:post, :title, size: 20)
会创建 id, name 这些 attributes,不
像 class 是在 text_field(:post, :title, class: "create_input")
中被赋予的。
这些 HTML attributes 似乎都是用来被从 View 获取,然后被赋予给 Controller,然后传输给 Model,谁能给出几个例子说明这里面是怎么传递的?
好像和 assets pipeline 有关。像是 data-* HTML attributes.
-- EDIT 2 -- 看了 1 楼的连接 API 文档显示的 source code:
# File actionview/lib/action_view/helpers/form_tag_helper.rb, line 188
def text_field_tag(name, value = nil, options = {})
tag :input, { "type" => "text", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys)
end
后明白这些 attributes 是如何赋值以及输出成 HTML 的了。 但是还是没明白他们的作用和如何传递给 controller,model 的。