我一直在仔细检查所有其他问题和答案。
我的表单就是这样开始的:
<% @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}
Rake路线说:
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 :(得分:1)
尝试使用
company.news.build
而不是新的。在那之后,你不应该做任何特别的事情:
<% @new_article = company.news.build %>
<%= form_for([company, @new_article]) do |news_form| %>
答案 1 :(得分:0)
即使已定义公司,并通过实例变量传入部分 - 并且对于页面中的其他内容(正常运行)似乎也没问题。当我做类似的事情时:
<% @c = Company.find_by_id(company.id) %>
<% @new_article = @c.news.build %>
<%= form_for([@c, @new_article]) do |news_form| %>
工作正常。很奇怪。
答案 2 :(得分:-1)
你需要一个company.id&lt;%= form_for(@ new_article,{:url =&gt; [company.id,@ new_article]})do | news_form | %GT;