Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Ruby on rails 更改表单_为rails 3.1生成的html表单id_Ruby On Rails_Ruby_Ruby On Rails 3_Form For - Fatal编程技术网

Ruby on rails 更改表单_为rails 3.1生成的html表单id

Ruby on rails 更改表单_为rails 3.1生成的html表单id,ruby-on-rails,ruby,ruby-on-rails-3,form-for,Ruby On Rails,Ruby,Ruby On Rails 3,Form For,我有以下表格: <%= form_for [post, Comment.new,], :remote => true do |f| %> <%= f.text_area :content, :cols =>10, :rows => 1%> <% end %> <%= f.submit :class => "input_comment" %> true do | f |%> 10,:行=>1%> “输入注释”%> 生成下

我有以下表格:

<%= form_for [post, Comment.new,], :remote => true do |f| %>
<%= f.text_area :content, :cols =>10, :rows => 1%>
<% end %>
<%= f.submit :class => "input_comment"  %>
true do | f |%>
10,:行=>1%>
“输入注释”%>
生成下一个html代码的:

<form method="post" id="new_comment" data-remote="true" class="new_comment" 
action="/post/4efcda9e1d41c82486000077/comments" accept-charset="UTF-8"><div 
style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8">
<input type="hidden" value="ctVfDF/O4FIR91I7bC5MVezQmutOCkX3dcXe73uNPZY=" name="authenticity_token">

<textarea rows="1" name="comment[content]" id="comment_content" cols="10"></textarea>
<input type="submit" value="Create Comment" name="commit" class="input_comment">
</form>

如果在同一页面中有多个表单,则使用相同id的html无效

  • 生成id=“new\u comment”
  • textarea generate的idid=“comment\u content”
同一页面中有这么多表单是无效的html


如何更改rails 3.1中method helper的form_自动生成的id?

您应该能够将表单的id设置为您想要的任何内容。比如:

<%= form_for @object, :html=> {:id => 'custom_form_id'} do |f| %>
{:id=>'custom_form_id'}do | f |%>

根据miked的说法,为帖子创建唯一表单id的最简单方法是在id属性中使用帖子的id号,如下所示:

<%= form_for [post, Comment.new,], :remote => true, :html => { :id => "new_comment_on_#{post.id}" } do |f| %>
true,:html=>

我认为
:namespace
选项就是您想要的

它将名称附加到表单的id以及所有输入和标签字段中

e、 g

true do | f |%>
10,:行=>1%>
将产生:

表单id=
NAMESPACE\u new\u comment

Textarea id=
NAMESPACE\u comment\u content

从:

:namespace-表单的命名空间,用于确保id的唯一性 表单元素上的属性。名称空间属性将作为前缀 在生成的HTML id上加下划线


例如,对于文本区域或按钮、字段…等
:id=>“text#{post.id}”
。您可以做同样的事情,但对于
文本区域
,在
:html=>{}
内传递它是不必要的。在
10中,:rows=>1,:id=>“对内容的注释”%>
。检查文档中的for rails.or 1.9.3语法:这是正确的答案,rails特别针对这个用例包含了名称空间选项。我同意。这应该是答案。谢谢@subletree。在某些情况下,id属性不会因赋值而更改。因此,这是最正确的方法。我尝试的版本:Rails:6.0.2.2
<%= form_for [post, Comment.new,], namespace: 'NAMESPACE', :remote => true do |f| %>
    <%= f.text_area :content, :cols =>10, :rows => 1%>
<% end %>