我是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" />
我该怎么做?
答案 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选项(使用帮助程序可以保持代码清洁)。