Rails:多次使用 form_for (DOM id)

发布于 2024-11-16 20:46:51 字数 212 浏览 2 评论 0原文

我想对同一页面中的同一模型多次使用 form_for 助手。但输入字段使用相同的 ID 属性(在 HTML 中),因此单击另一个表单中字段的标签将在第一个表单中选择相同的输入。

除了通过 :for => 手动设置所有属性之外,还有其他解决方案吗? "title_#{item.id}" 和 :id => “标题_#{item.id}”?

使用 Rails 3.0.9

I would like to use the form_for helper multiple times for the same model in the same page. But the input fields use the same ID attribute (in the HTML), so clicking on the label of a field in another form will select the same input in the first form.

Is there a solution besides settings all attributes manually via :for => "title_#{item.id}" and :id => "title_#{item.id}"?

Using Rails 3.0.9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦中楼上月下 2024-11-23 20:46:51

您可以使用 :namespace =>; 'some_unique_prefix' 选项。与 :index 相比,这不会更改 name 属性中使用的值。

也可以使用数组,例如,当您有嵌套表单或不同表单恰好有一些共同字段时: :namespace => [@product.id, tag.id]:namespace => [:产品,@product.id]

You can use :namespace => 'some_unique_prefix' option. In contrast to :index, this will not change the value used in the name attribute.

It's also possible to use an array, e.g. when you have nested forms or different forms that happen to have some fields in common: :namespace => [@product.id, tag.id] or :namespace => [:product, @product.id]

为你拒绝所有暧昧 2024-11-23 20:46:51

我自己找到了答案,可以将 :index 选项传递给 form_for。该字符串将用于 id 和属性:

<%= form_for @person, :index => @person.id do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

将解析

<form accept-charset="UTF-8" action="/person/11" class="edit_person" id="edit_person_11" method="post">
  <!-- Hidden div for csrf removed -->
<label for="person_11_name">Name</label> 
<input id="person_11_name" name="person[11][name]" size="30" type="text" /> 
<input name="commit" type="submit" value="Update Person" /> 
</form>

注意它也会更改输入的名称。

I found the answer myself, one can pass a :index option to form_for. That string will be used in the id and for attributes:

<%= form_for @person, :index => @person.id do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

will parse

<form accept-charset="UTF-8" action="/person/11" class="edit_person" id="edit_person_11" method="post">
  <!-- Hidden div for csrf removed -->
<label for="person_11_name">Name</label> 
<input id="person_11_name" name="person[11][name]" size="30" type="text" /> 
<input name="commit" type="submit" value="Update Person" /> 
</form>

Notice it'll change the name of the inputs as well.

柠檬 2024-11-23 20:46:51

我相信你可以添加这个参数:

:html => { :id => 'id_i_want' }

I believe you can add this param:

:html => { :id => 'id_i_want' }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文