rails自定义html元素表单

时间:2012-11-23 04:59:54

标签: html ruby-on-rails ruby custom-component

我是Rails的新手,我搜索过网络和书籍,但是在使用rails时我找不到如何制作自定义表单。 会发生什么事情,我习惯于编写自己的HTML标签,我很满意。我不喜欢使用像JSF(来自JAVA)的libs为我编写html组件,我不希望rails为我写它,除了简单的标签,如

text_field(:post, :title, :size => 20)
# => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />

所以..我怎么能这样做..例如:我想自己写

<input type="text" class="myclass" data="mydata" name="how-to-get-the-attribute-name-with-rails" value="how-to-get-value-with-rails" />

我该怎么做?

3 个答案:

答案 0 :(得分:2)

如果您想要更多地控制您正在创建的HTML,您还可以使用content_tag

content_tag :input, "label_name", class: "myclass", data: "mydata", name: "how-to-get-the-attribute-name-with-rails", value: "how-to-get-value-with-rails"

您可以为:input补充任何html元素标记。因此,如果您想要一个div,请使用:div等...

答案 1 :(得分:1)

如上所述,rails中任何表单字段的名称采用以下格式

name = 'post[name]' i.e. model_name[attribute_name]

因此,您的params哈希将包含:post => {:name => value},允许您使用质量分配。但是如果您想从表单中获取一些额外的参数,您可以直接将它们包含在表单中并根据需要给他们任何名字。它将在您的参数哈希中提供。


您可以使用value = <%= @object.attribute_name. %>轻松获取价值 我不确定你是否想知道这个或其他什么。如果您需要更多帮助,请告诉我。

答案 2 :(得分:0)

你可以简单地在Rails表单中编写html,所以

<input type="text" class="myclass" data="mydata" name="how-to-get-the-attribute-name-with-rails" value="how-to-get-value-with-rails" />

完全有效,但请注意,您应该以正确的方式使用名称和ID来自动将它们绑定到后端控制器。

毕竟,text_field(:post, :title, :size => 20)做的是将参数转换为纯HTML(我们称之为Rails中的辅助方法)。

阅读here以获取formhelper选项(使用帮助程序可以保持代码清洁)。