Rails别名为text_tag名称

时间:2014-09-23 16:20:55

标签: ruby-on-rails ruby

是否有别名text_field名称?

我使用的是form_for,模型包含另外两个模型,每个模型都有相似的属性和方法名称。

类似的东西:

form_for(@model) do |f|
  f.text_field :name
  f.text_field :name as: :name2
end

2 个答案:

答案 0 :(得分:1)

那么你所希望的是嵌套?例如。 model[name]model[sub_model][name]是吗?如果是这样,那么您正在寻找fields_for方法。 e.g。

<%= form_for(@model) do |f| %>
  <%= f.text_field :name %>
  <%= f.fields_for :sub_model do |sub_fields| %>
    <%= sub_fields.text_field :name %>
  <% end %>
<% end %>

这会将sub_model传递给新FormBuilder以进行嵌套,并输出很长的内容。

<form>
  <input type="text" name="model[name]" id="model_name" />
  <input type="text" name="model[sub_model][name]" id="model_sub_model_name">
</form>

答案 1 :(得分:0)

Fields_for允许您在同一表单中使用具有相同属性名称的两个模型。如果要为两个模型中的name属性指定不同的名称(标签),也可以使用label_tag来执行此操作。下面给出了这两种情况的代码供您参考。

form_for @modal1 do |f|
   label_tag 'name'
   f.text_field :name

   f.fields_for :modal2 do |t|
     label_tag 'name', 'New name'
     t.text_field :name
   end
end

如果这不是您所期望的,请发表评论并提供更多详细信息。