Rails 3使用嵌套资源创建方法?

时间:2012-06-16 21:10:45

标签: ruby-on-rails ruby-on-rails-3 nested has-many form-for

如何使用rails 3功能清理它?我有一个属于一个组的帖子,也是一个用户。该组和用户has_many帖子。我正在使用嵌套资源

resources :groups do
    resources :posts
end



<%= form_for @post, :url => group_posts_path(params[:group_id]) do |f| %>
....
<% end %>

 def create
   @group = Group.find(1)
   @post = @group.posts.build(params[:post])
   @post.user_id = current_user.id

   respond_to do |format|
      if @post.save
      .....
      end
   end
 end

谢谢。

2 个答案:

答案 0 :(得分:0)

在模型中使用accepts_nested_attributes_for方法。

如果您不熟悉嵌套表单,请查看this railscastthe second part以获取更多信息。

答案 1 :(得分:0)

在视图中:

  <%= form_for [@group, @group.posts.build] do |f| %>
    ...
  <% end %>

在控制器中:

  class PostsController < ApplicationController
    before_filter :find_group
    ...
    def create
      @post = @group.posts.build(params[:post])
      current_user.posts << @post
    end

    protected
    def find_group
      @group = Group.find(params[:group_id])
    end
  end