它不起作用关系嵌套资源rails

时间:2014-11-28 22:53:49

标签: ruby-on-rails

我在rails中遇到一些关系问题。我的应用程序具有发布者和网站之间的关系。

当我使用f.collection_select关系向发布商添加网站时,关系正常。但是,如果我创建一个嵌套路由并使用

localhost:3000/publishers/8/sites/new

<% = Link_to ("Add site", new_publisher_site_path (publisher), class "btn btn-default navbar-btn")%

def new
  @publisher = Publisher.find(params[:publisher_id])
  @site = Site.new 
end

它没有形成关系。

2 个答案:

答案 0 :(得分:0)

假设发布商与网站之间的关系为发布商has_many :sites和网站belongs_to :publisher

在站点控制器中执行此操作:

 def new 
   @publisher = Publisher.find(params[:publisher_id])
   @site = @publisher.sites.new
 end

 def create
   @publisher = Publisher.find(params[:publisher_id])
   @site = @publisher.sites.new(sites_params)
   if @site.save
      redirect_to publishers_path
   else
     render 'new'
   end
 end

答案 1 :(得分:0)

如果您指的是模型SitePublisher之间的关系,则应使用has_manyhas_onebelongs_to或其他关联rails assosiations。< / p>

然后你可以写:

def new 
  @publisher = Publisher.find(params[:publisher_id])
  @site = @publisher.sites // sites only associated with Publisher.find(params[:publisher_id])
end