标签: fields-for

Rails:fields_for带索引?

是否有方法(或实现类似功能的方法)来做fields_for_with_index

例:

<% f.fields_for_with_index :questions do |builder, index| %>  
  <%= render 'some_form', :f => builder, :i => index %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

部分呈现需要知道当前索引在fields_for循环中是什么.

loops ruby-on-rails fields-for

94
推荐指数
6
解决办法
5万
查看次数

Rails 3 fields_for - 排序顺序丢失

我正在使用Rails 3.0.3和ruby 1.9.2p0.

在我的profiles_controller(编辑功能)中,我有这个电话

@profile = Profile.find(params[:id])
@profile_items = @profile.profile_items.order("pos")
Run Code Online (Sandbox Code Playgroud)

以正确的顺序获取@profile_items,按"pos"排序.在_form.html.erb中我有以下内容

<% @profile_items.each do |pi| %>
  <%= pi.pos %> | 
<% end %>
<%= f.fields_for :profile_items do |f2| %>
  <%= render 'profile_item_fields', :f => f2 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

第3行是测试代码,用于显示@profile_items的顺序正确.但是当它们被渲染时,它们已经丢失了排序顺序!

现在我已经搜索了很多答案,我认为这必须是一个常见的"陷阱".

感谢任何帮助......

sorting fields-for ruby-on-rails-3

32
推荐指数
2
解决办法
8674
查看次数

fields_for not rendering - rails 3

最后转移到Rails 3进行新项目,并且已经遇到了新手问题.

尝试做一个简单的嵌套表单.

2个型号:列表和任务

列表模型

class List < ActiveRecord::Base
  has_many :tasks, :dependent=>:destroy
  accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }
end
Run Code Online (Sandbox Code Playgroud)

任务模型

class Task < ActiveRecord::Base
  belongs_to :list

end
Run Code Online (Sandbox Code Playgroud)

列表控制器

def new
   @list = List.new
   3.times{ @list.tasks.build }
end
Run Code Online (Sandbox Code Playgroud)

列表/ new.html.erb

<% form_for :list, :url=>{:action=>"create"} do |f| %>
    <%= f.text_field :name, :class=>'big' %>
    <%= f.label :name, "ex: Today's Todos, Christmas List" %>

    <% f.fields_for :tasks do |builder| %>
        <p>
            <%= builder.label :name, "Task" %>
            <%= builder.text_field :name %>
            <%= …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-forms fields-for

26
推荐指数
1
解决办法
1万
查看次数

使用带有fields_for的数组

如何使用fields_for迭代一个对象数组(所有相同的模型)?该数组包含current_user创建的对象.

我目前有:

<%= f.fields_for :descriptionsbyuser do |description_form| %>
<p class="fields">
    <%= description_form.text_area :entry, :rows => 3 %>
    <%= description_form.link_to_remove "Remove this description" %>
    <%= description_form.hidden_field :user_id, :value => current_user.id %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但我想用我在控制器中创建的数组替换:descriptbyuser - @descriptionsFromCurrentUser

这也是Ryan Bate的"nested_form_for"内部

任何指针将不胜感激!

亚当

arrays ruby-on-rails fields-for

18
推荐指数
4
解决办法
2万
查看次数

我应该如何将rails和simple_form用于嵌套资源?

我正在尝试同时使用另一个嵌套资源创建一个资源.我正在使用Rails4和simple_form 3.0.0rc.这是我的代码.

楷模:

class User < ActiveRecord::Base
  has_one :profile
  accepts_nested_attributes_for :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

控制器:

class UsersController < ApplicationController
  def new
    @user = User.new
    @user.build_profile
  end

  def create
    user = User.new user_params
    user.save
    redirect_to root_url
#    @par =params
  end

  private
    def user_params
      params.require(:user).permit(:email, profile_attributes: [:name])
    end
end
Run Code Online (Sandbox Code Playgroud)

查看(新用户的表单)

<%= simple_form_for @user do |f| %>
  <%= f.input :email %>
  <%= simple_fields_for :profile do |p| %>
    <%= p.input :name %>
  <% end %>
  <%= f.submit %>
<% …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-attributes fields-for simple-form strong-parameters

18
推荐指数
1
解决办法
2万
查看次数

Rails 4:fields_for中的fields_for

我正在学习RoR,我正在尝试找到如何使用has_one模型在另一个中设置fields_for:

class Child < ActiveRecord::Base
    belongs_to :father
    accepts_nested_attributes_for :father
end

class Father < ActiveRecord::Base
    has_one :child
    belongs_to :grandfather
    accepts_nested_attributes_for :grandfather
end


class Grandfather < ActiveRecord::Base
    has_one :father
end
Run Code Online (Sandbox Code Playgroud)

我在Railscasts上使用嵌套模型表单第1部分来获取这些:在children_controller.rb中:

  def new
    @child = Child.new
    father=@child.build_father
    father.build_grandfather
  end

def child_params
      params.require(:child).permit(:name, father_attributes:[:name], grandfather_attributes:[:name])
    end
Run Code Online (Sandbox Code Playgroud)

我的形式:

<%= form_for(@child) do |f| %>
  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  mother:<br>
  <%= f.fields_for :father do |ff| %>
    <%= ff.label :name %>
    <%= ff.text_field :name %><br>
      grand mother:<br>
      <%= f.fields_for :grandfather …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails form-for fields-for nested-form-for ruby-on-rails-4

15
推荐指数
1
解决办法
2万
查看次数

用于创建和更新Mongoid数组字段的表单

我一直在努力为具有数组字段的Mongoid模型创建表单.我希望我的表单在数组中的每个条目的文本框中.如果我正在创建一个新记录,则默认将是一个空字段(以及一些javascript以在页面上动态添加新字段).

我使用fields_for搜索了一个解决方案,但似乎更倾向于处理你有一个对象/模型数组的情况,而不是我拥有的情况,这是一个字符串数组.

我将使用一个人和一个电话号码的例子.

class Person
  include Mongoid::Document
  field :name, :type => String
  field :phone_numbers, :type => Array
end
Run Code Online (Sandbox Code Playgroud)

对于控制器,只假设典型的控制器,但在new方法中我用一个空字符串初始化phone_number数组.

这是表单代码:

  <%= form_for(@person) do |f| %>
    <div class="field">
      <%= f.label :name %><br />
      <%= f.text_field :name %>
    </div>
    <div class="field">
      <%= f.label :phone_numbers %><br />
      <% @person.phone_numbers.each do |phone_number| %>
        <%= text_field_tag "person[phone_numbers][]", phone_number %>
      <% end %>
    </div>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

一切正常.有一些我不喜欢的事情.

  • text_field_tag调用中字段的硬编码名称.
  • 使用text_field_tag而不是f.text_field
  • 感觉我应该以某种方式使用fields_for而不是这个

有没有人对如何实现这个有更好的建议?或者你认为这是正确的吗?

ruby ruby-on-rails mongodb fields-for mongoid

13
推荐指数
1
解决办法
9680
查看次数

添加accepts_nested_attributes_for时,Fields_for消失

我在Rails 3.2.5中做了一个嵌套的表单,但是当我添加accepts_nested_attributes_for我的fields_for消失时(他们只是停止在我的表单中显示).
这是我的模特:

class Product < ActiveRecord::Base
    attr_accessible :title, :description, :variants_attributes

    has_many :variants
    accepts_nested_attributes_for :variants

    validates :title, presence: true
end  
Run Code Online (Sandbox Code Playgroud)

我的第二个模特是

class Variant < ActiveRecord::Base
    belongs_to :product
    attr_accessible :price, :sku, :weight, :inventory_quantity, :product_id
end
Run Code Online (Sandbox Code Playgroud)

在我看来,我有

<%= form_for [:admin, @product], :html => {:multipart => true} do |f| %>

 <%= render 'admin/shared/error_messages', object: f.object %>

 <fieldset>
  <legend>Producto Nuevo</legend>  
    <div class="control-group">
      <%= f.label :title, 'Título', class: 'control-label' %>
      <div class="controls">
        <%= f.text_field :title %>
      </div>
   </div>

    **<%= f.fields_for :variants …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-attributes fields-for ruby-on-rails-3 ruby-on-rails-3.2

11
推荐指数
1
解决办法
1915
查看次数

如何更改fields_for生成的html标记和类?

这是一个简单的问题,我有点惭愧地问,但是我一直在撞墙并在导轨3文档中导航而没有任何成功:/

所以,这是事情:

当我使用fields_for帮助程序时,它将生成的字段包装在<div class="fields"> ... </div>标记中.

所以,我的代码是

<ul class="block-grid two-up">
  <%= f.fields_for :images do |image_builder| %>
    <%= render "images/form", :f => image_builder %>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

生成的html是:

<ul class="block-grid two-up">
  <div class="fields">
    <div>
      <label for="company_images_attributes_0_image"> Image</label>
      <input id="company_images_attributes_0_image" 
             name="company[images_attributes][0][image]" type="file">
    </div>
  </div>
  <div class="fields">
    <div>
      <label for="company_images_attributes_1_image"> Image</label>
      <input id="company_images_attributes_1_image" 
             name="company[images_attributes][1][image]" type="file">
    </div>
  </div>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要做的是将<div class="fields">包装器标签更改为<li>.

文档说您可以将选项传递给fields_for,但是不清楚您可以传递哪些选项,也许您可​​以更改此包装器标记?

可能是覆盖一个函数,有点像ActionView::Base.field_error_proc表单中的错误.

快速编辑:我忘了提到我正在使用simple_form生成此表单.我尝试在simple_form.rb配置文件中查找自定义方法,但我没有看到任何方法.

解决方案 经过进一步调查后,结果表明表单也使用了nested_form gem来生成表单(不仅仅是simple_form).这个生成器导致fields_for被包装在div标签中.谢谢大家的建议!

ruby-on-rails fields-for ruby-on-rails-3 simple-form

10
推荐指数
2
解决办法
7640
查看次数

在几个地方使用fields_for

我有一个简单的模型

class Ad < ActiveRecord::Base
   has_many :ad_items
end

class AdItem < ActiveRecord::Base
   belongs_to :ad
end
Run Code Online (Sandbox Code Playgroud)

我有一个"广告/新"视图,向我显示创建新广告并向其添加一些项目的表单

.html.erb代码如下所示:

<% form_for @ad, do |ad_form| %>
   <!-- some html -->

   <% ad_form.fields_for :ad_items do |f| %>
      <%= f.text_area "comment", :class => "comment", :rows => "5" %>
   <% end %>

   <!-- some other html -->

   <% ad_form.fields_for :ad_items do |f| %>
      <% render :partial => "detailed_item_settings", :locals => {:f => f} %>
   <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

当广告有一个项目时......

def new
   @ad = session[:user].ads.build …
Run Code Online (Sandbox Code Playgroud)

forms ruby-on-rails fields-for

9
推荐指数
1
解决办法
2050
查看次数