2012-07-08 67 views
0

我一直在經歷所有其他問題和答案無濟於事。導軌3嵌套的路線形成問題

我的形式開始像這樣:

<% @new_article = company.news.new %> 
<%= form_for(@new_article, {:url => [company, @new_article]}) do |news_form| %> 

的錯誤是這樣的:

Routing Error 

No route matches {:action=>"show", :controller=>"news", :company_id=>nil, :id=>2} 

耙路線這樣說:

  company_news_index GET /companies/:company_id/news(.:format)           
             {:action=>"index", :controller=>"news"} 
           POST /companies/:company_id/news(.:format)           
             {:action=>"create", :controller=>"news"} 
      new_company_news GET /companies/:company_id/news/new(.:format)          
             {:action=>"new", :controller=>"news"} 
      edit_company_news GET /companies/:company_id/news/:id/edit(.:format)        
             {:action=>"edit", :controller=>"news"} 
       company_news GET /companies/:company_id/news/:id(.:format)          
             {:action=>"show", :controller=>"news"} 
           PUT /companies/:company_id/news/:id(.:format)          
             {:action=>"update", :controller=>"news"} 
           DELETE /companies/:company_id/news/:id(.:format) 

的問題是,它工作在一個區域我的網站很好。顯然它沒有正確設置company_id,但是當我手動設置它時,它似乎沒有解決任何問題。我覺得我已經嘗試了所有的解決方案 - 但考慮到它可以在網站的其他地方使用,我很困惑它爲什麼不能在一個地方工作。 (公司IS定義 - 在這種情況下它的id是2)。

+0

我很難理解你想做什麼。可能是你應該用'company_news_index_path(company_id:company.id)'和':method'用':post'指定':url'?所以你也可以嘗試'[company,@new_article]'作爲第一個參數。 – tiktak 2012-07-08 00:23:36

+0

嘗試在<%= form_for(@new_article,{:url => [company,@new_article]})中使用company.id do | news_form | %>應該看起來像<%= form_for(@new_article,{:url => [company.id,@new_article]})do | news_form | %> – Raghu 2012-07-08 00:24:30

回答

0

即使公司的定義,並傳遞到部分通過一個實例變量 - 似乎是罰款在頁面其他事情(通常行事)。當我做這樣的事情時:

<% @c = Company.find_by_id(company.id) %> 
<% @new_article = @c.news.build %> 
<%= form_for([@c, @new_article]) do |news_form| %> 

它工作正常。很奇怪。

-1

你需要一個company.id <%= form_for(@new_article,{:url => [company.id,@new_article]})do | news_form | %>

1

嘗試使用

company.news.build 

,而不是新的。在這之後,你應該不需要做什麼特別的:

<% @new_article = company.news.build %> 
<%= form_for([company, @new_article]) do |news_form| %> 
+0

給出了完全相同的錯誤 – Elliot 2012-07-08 14:58:06

+0

您可以添加您的路線定義嗎? – gmalette 2012-07-09 12:29:19