0

问题:

我将如何创建一个新模型之间的关联:post.rb和现有的 2 个模型:类别 + 工作模型?以及我将如何提取post.rb's 属性content:text,以便我可以从work#new-> _formpartial添加一个独特的帖子

work我在和category模型之间有多对多的关系:through categorywork

我想添加一个名为的新模型post,其属性名为content:text我希望该模型的关联是这样的:每个作品都有很多类别,作品中的每个类别都有一个独特的帖子。

不幸的是,我不知道如何正确地绘制或解释这种关联,因此我将在下面绘制一个临时架构以供参考以及图片。

eg:文字参考

一项工作

  • 名称:项目A

许多类别

  • 项目 A -> 类别名称:UxD
  • 项目 A -> 类别名称:ID
  • 项目A -> 类别名称:开发

独特的帖子

  • 项目 A -> UxD -> 帖子内容:lorem ipsum 1
  • 项目 A -> ID -> 帖子内容:lorem ipsum 2
  • 项目A -> 开发-> 帖子内容:lorem ipsum 3

例如:图形参考

工作#索引

工作#索引


作品#show?category1

作品#show?category1


作品#show?category2

作品#show?category2





楷模

我将如何编写关联以连接post.rb到预先存在的多对多关系

类别.rb

class Category < ActiveRecord::Base
  validates :name, :presence => true
  has_many  :categoryworks
  has_many :works, :through => :categoryworks
  accepts_nested_attributes_for :works
  attr_accessible :description, :name, :category_ids, :svg

end

工作.rb

class Categorywork < ActiveRecord::Base

  validates :name, :presence => true

  has_many  :categoryworks
  has_many :categories, :through => :categoryworks
  accepts_nested_attributes_for :categories
  attr_accessible :name, :subtitle, :category_ids, :svg
end

分类工作.rb

class Categorywork < ActiveRecord::Base

  belongs_to    :category
  belongs_to    :work
  attr_accessible :category_id, :work_id
end

控制器

works_controller新控制器中多对多关联的示例

我要添加什么work_controller.rb来访问post.rbattr content:text ?

 def new
    @work = Work.new

    @all_categories = Category.all
    @work_category = @work.categoryworks.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @work }
   end
 end

意见

_form Partial :显示类别和作品之间的多对多

我会写什么来添加post.rbattr content:text 到这个表单的每个复选框

<div class="field">
  <%= hidden_field_tag "work[category_ids][]", nil %>
  <% Category.all.each do |category|  %>
    <%= check_box_tag "work[category_ids][]", category.id, @work.category_ids.include?(category.id), id: dom_id(category) %>
    <%= label_tag dom_id(category), category.name %><br>
  <% end  %>
</div>
4

0 回答 0