Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rails自定义html元素表单_Html_Ruby On Rails_Ruby_Custom Component - Fatal编程技术网

rails自定义html元素表单

rails自定义html元素表单,html,ruby-on-rails,ruby,custom-component,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=

我是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}" />
text\u字段(:post,:title,:size=>20)
# => 
所以。。我该怎么做。。例如:我想自己写

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


我该怎么做呢?

您可以简单地在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\u字段(:post,:title,:size=>20)
所做的是将参数转换为纯HTML(我们在Rails中称之为helper方法)


阅读formhelper选项(使用Helper将保持代码的整洁)。

如果您想对正在创建的html进行更多控制,还可以使用
内容\u标记

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
等。

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

name = 'post[name]' i.e. model_name[attribute_name]
因此,您的params散列将包含
:post=>{:name=>value}
,这允许您使用大规模赋值。但是如果您想从表单中获取一些额外的参数,可以直接将它们包含在表单中,并根据需要为它们命名。它将在您的params散列中可用


使用
value=

我不知道你是想知道这件事还是别的什么。如果您需要更多帮助,请告诉我。

谢谢@sameera207,但正确获取这些名称和ID正是我想要的,但我想通过rails调用一些东西来实现这一点。。这是一种方式吗?@thiagoh,实际上在rails助手方法中,几乎所有东西都可以配置。如果我答对了你的问题,我想“joofsh”已经给了你答案,如果有帮助,请告诉我们:)