Ruby on Rails数据库关联表

时间:2015-09-15 14:23:25

标签: ruby-on-rails

我有帖子和类别。我在他们两个之间建立了关联,所以现在我可以创建一个新的Post is Posts / new并选择我想要的类别并在Category / 1 / show中显示帖子。我希望能够转到Categories / 1并创建一个包含该类别的新帖子,而无需在表单中选择一个类别。

有人能帮助我吗?谢谢。

模特:

类别:

class Category < ActiveRecord::Base
    has_many :places
end

地点:

class Place < ActiveRecord::Base
    belongs_to :category  
end

在地方#show中我有这个链接:

<%= link_to 'Edit', edit_place_path(@place) %>

在categories_controller中:

  def show
    @category = Category.find(params[:id])
    @title = @category.name
    @posts = @category.places
  end

表格形式:

  </div>
    <div class="field">
    <%= f.label :category_id %><br>
    <%= f.select :category_id, Category.all.collect {|p| [ p.name, p.id ] }, { include_blank: true } %>
  </div>

1 个答案:

答案 0 :(得分:2)

您应该在categories#show视图中添加新链接:

<%= link_to 'Post to this Category', new_post_path(category_id: @category.id) %>
#=> <a href="posts/new?category_id="2">Post to this Category</a>

然后修改您的posts#new方法:

def new
  @post = Post.new
  @post.category = Category.find(params[:category_id]) if params[:category_id].present?
end

使用此选项可以选择类别。