简体   繁体   English

有很多不符合我的观点

[英]has many didn't work with my view

I'm trying to get my has_many working. 我正在尝试让has_many工作。

I've two models: 我有两个模型:

project: 项目:

  • name:string 名称:字符串
  • desc:text 说明:文
  • tags:references 标签:引用

project has_many :tags 项目has_many:标签

tags: 标签:

  • name:string 名称:字符串

tags belongs_to :project 标签归属地:项目

my project_controller: 我的project_controller:

def new
  @project = Project.new
  @project.tags = Tags.new
end

but what is the right view? 但是正确的看法是什么? I tried something like this: 我尝试过这样的事情:

= form_for @project do |f|
 = f.text_field :title
 = f.text_area :desc

 = f.fields_for :tags, @project.tags do |f_tags|
   = f_tags.text_field :name, placeholder: 'Tag-Name'

But I get a error like this: undefined method 'name' for # <Tag::ActiveRecord_Associations_CollectionProxy:0x00007f4456cc7148> 但我收到这样的错误:# <Tag::ActiveRecord_Associations_CollectionProxy:0x00007f4456cc7148>未定义方法'name'

I didn't get my mistake. 我没弄错。

And how I can add multiple tags? 以及如何添加多个标签? My idea was to duplicate the div where the tag are. 我的想法是复制标签所在的div。

I think you want to call build on your tags relation, and then not pass tag objects to your fields_for . 我认为您想在标签关系上调用build ,然后不将标签对象传递给您的fields_for

Controller: 控制器:

def new
  @project = Project.new
  @project.tags.build
end

View: 视图:

= f.fields_for :tags do |f_tags|

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM