1

我是 Rails 的新手,我在网上和书籍上搜索过,但是在使用 rails 时我找不到如何制作自定义表单。发生的事情是我习惯于编写自己的 HTML 标签,我对此很满意。我不喜欢使用像 JSF(来自 JAVA)这样为我编写 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" />

我怎样才能做到这一点?

4

3 回答 3

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. 因此,如果您想要一个 div,请使用:divetc...

于 2012-11-23T05:19:22.390 回答
1

正如您在上面所写,rails 中任何表单字段的名称都采用以下格式

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

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


你可以很容易地使用value = <%= @object.attribute_name. %> 我不确定你是否想知道这个或其他东西来获得价值。如果您需要更多帮助,请告诉我。

于 2012-11-23T05:50:33.023 回答
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 中称它们为辅助方法)。

在此处阅读表单助手选项(使用助手将保持您的代码干净)。

于 2012-11-23T05:16:01.313 回答