rails 4 f.fields_for不会迭代我的嵌入式集合

时间:2014-09-04 04:56:21

标签: mongodb ruby-on-rails-4 fields-for mongoid4

我正在尝试构建一个简单的应用程序,用户可以发布内容并将问题附加到帖子(post.questions)。

我在embeds_many场景中显示问题时出现问题。虽然我在PostsController #new方法中创建了多个问题,但渲染后的html只显示了一个问题。

我正在使用rails4 / mongoid / mongodb。

Post.rb:

class Post
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title, type: String
  field :body, type: String

  embeds_many :post_replies
  embeds_many :questions
  belongs_to :poster, class_name: "User"

  accepts_nested_attributes_for :questions
end

Quesion.rb。

class Question
  include Mongoid::Document
  include Mongoid::Timestamps
  field :q

  embedded_in :post
end

PostsController.rb

class PostsController < ApplicationController

def new 
 @post = Post.new
 3.times{
  post.questions.build
 }
end

 def post_params
  params.require(:post).permit(:title, :body, questions_attributes: [:id, :q, :_destroy])
 end

end #end controller

的routes.rb     devise_for:用户     资源:用户做的       资源:帖子       资源:地址     结束 视图/帖/ _form.html.erb

<%= form_for([current_user, @post], :html => { :class => "form-horizontal" }) do |f| %>
 -
 -
  <%=f.fields_for @post.questions do|question| %>
    <%= question.text_field :q, :placeholder =>'question', :class => "form-control" %>
  <%end%>
 -
 -
 <%end%>

我希望上面的字段显示3个问题,但它只显示一个问题。我为fields_for尝试了不同的方法,但都没有。

非常感谢任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我改变了

<%=f.fields_for @post.questions do|question| %>

<%=f.fields_for :questions, @post.questions do|question| %>

并且有效。

Api ref:这里http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for