2013-04-30 58 views
0

我有两个不同的控制器,我从铁轨生成,并且每个控制器都有索引,编辑,更新,销毁等等...红宝石在rails上:没有路线使用edit_path?

现在我试图将这两个控制器(列表和想法)联系起来。我有这个循环中,我的列表 - >显示页面

<% @list.ideas.each do |idea| %> 
    <div> 
    <div class="list_idea_desc"><%= idea.description %></div> 
    <div><%= link_to 'Show', idea %></div> 
    <div><%= link_to 'Edit', edit_idea_path(idea) %></div> 
    <div><%= link_to 'Destroy', idea, method: :delete, data: { confirm: 'Are you sure?' } %></div> 
    </div> 
<% end %> 

我试图让edit_idea_path工作,但它给了我错误

No route matches {:action=>"edit", :controller=>"ideas", 
:id=>#<Idea id: nil, name: nil, description: nil, picture: nil, 
created_at: nil, updated_at: nil, list_id: 2>} 

任何想法,我怎么可以使用两种不同的控制器?这是否提供了足够的信息?

感谢

回答

1

Idea实例没有一个ID(:id=>#<Idea id: nil...),所以路由器无法生成它的路由。在尝试为他们生成你的想法之前,确保你的想法已经保存。

此外,与问题没有直接关系,但您可以使用link_to "Edit", [:edit, idea]来推断基于类别idea的路线。

+0

是因为你在说我的想法控制器我有一个方法,'高清edit'和在那里我有'@idea = Idea.find(params [:id])'在哪里寻找一个'params [:id]'?但在我的idea.description中,有一张表应该和'list'有关?我很抱歉,也许我只是不理解rails,你有没有例子? – hellomello 2013-04-30 06:22:49

0

检查你的routes.rb文件,你正在使用REST风格的路由

,如果没有帮助,贴在这里路由代码

+0

我有'edit_idea'' GET''/ideas /:id/edit(。:format)''ideas#edit' – hellomello 2013-05-01 02:01:59