Ruby on rails 集合\选择字段嵌套表单rails 3.1

Ruby on rails 集合\选择字段嵌套表单rails 3.1,ruby-on-rails,ruby-on-rails-3,mongoid,nested-forms,Ruby On Rails,Ruby On Rails 3,Mongoid,Nested Forms,我有3个型号第一个用户。rb: class User has_many :boards, dependent: :destroy has_many :posts, dependent: :destroy, :autosave => true accepts_nested_attributes_for :boards accepts_nested_attributes_for :posts end 第二个模型是itsboard.rb class Board has_many :p

我有3个型号第一个用户。rb:

class User
 has_many :boards, dependent: :destroy
 has_many :posts, dependent: :destroy, :autosave => true
 accepts_nested_attributes_for :boards
 accepts_nested_attributes_for :posts
end
第二个模型是itsboard.rb

class Board
 has_many :posts, :dependent => :destroy , :autosave => true
 accepts_nested_attributes_for :posts
 belongs_to :user
end
第三个模型是post.rb

class Post
 belongs_to :user
 belongs_to :board
end
我想在“我的行动”中创建一个带有母版的新帖子,新帖子来自帖子\u控制器我有:

@post = Post.new
respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @post }
end
我创建了一个新的董事会,其中包括:

def create
  @board = current_user.boards.new(params[:board])
   respond_to do |format|
    if @board.save
      format.html { redirect_to @board, notice: 'Board was successfully created.' }
      format.json { render json: @board, status: :created, location: @board }
    else
      format.html { render action: "new" }
      format.json { render json: @board.errors, status: :unprocessable_entity }
    end
  end
end
在部分\u form.thml.erb中,我有:

<%= form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.label :content %><br />
<%= f.text_area :content %>
<%= f.collection_select :board_id, Board.all, :id, :name%>
<%= f.submit %>
<% end %>
{:multipart=>true})do | f |%>

问题是,在我的选择字段中,出现在每个板上我只想显示和选择属于当前用户的线路板。


注意我使用的是mongoid。

您的模型可以更简单

class User
 has_many :boards, dependent: :destroy
 accepts_nested_attributes_for :boards
end

class Board
 has_many :posts, :dependent => :destroy , :autosave => true
 belongs_to :user
 accepts_nested_attributes_for :posts
end

class Post
 belongs_to :board
end

<%= form_for(@post, :html => {:multipart => true}) do |f| %>
<%= f.label :content %><br />
<%= f.text_area :content %>
<%= f.collection_select :board_id, Board.find_by_user_id(current_user.id), :id, :name%>
<%= f.submit %>
<% end %>
类用户
有很多:电路板,相依::销毁
接受:电路板的\u嵌套\u属性\u
结束
班级委员会
有很多:post,:dependent=>:destroy,:autosave=>true
属于:用户
接受以下内容的\u嵌套\u属性\u:posts
结束
班岗
属于:董事会
结束
{:multipart=>true})do | f |%>


谢谢find_by_user_id不适用于mongoid:(.Im使用mongoid。谢谢!将此添加到您的post类:scope:by_board,lambda | board_id |{where('board_id=?',board_id')谢谢,但我得到:语法错误!。我已经检查过这个:board.where(:user_id='current_user.id'))但是我又得到了每一块板:S。如果板上的:user\u id键与当前的\u user.id相同,为什么要得到每一块板?问题已经解决了:D这句话的
board.where(:user\u id=>current\u user.id)