路由问题

时间:2011-02-19 14:40:50

标签: ruby-on-rails

我有两个相同的控制器以相同的方式路由:

resources :profile
resources :friends

这是控制器

class ProfileController < ApplicationController



def index
@text = "profile"
end
def show
end
def new 
end
def create
end
def edit
end
def update
end
def destroy
end

end





class FriendsController < ApplicationController


def index
@text = "friends"
end
def show

end
def new 
end
def create
end
def edit
end
def update
end
def destroy
end

end

但是当我想在视图布局中定义菜单时,配置文件控制器会出现问题,但对于friends控制器也不会出现问题。以下是生成错误的代码:

<ul id="menu">

<li>
<%= link_to "Friends",friends_path %>
</li>
<li>
<%= link_to "Profile", profile_path %>
</li>


</ul>

,错误是:

No route matches {:action=>"show", :controller=>"profile"}

如果控制器和视图相同,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

这与您为Profile控制器提供了一个单一的名称和路线这一事实有关。您可以运行rake routes以查找路由助手的名称。查找GET /profile,它可能类似于index_profile_pathprofile_index_path

编辑:更具体地说,错误是因为默认情况下profile_path期望显示特定实例的助手,例如profile_path(@profile)

答案 1 :(得分:0)

尝试使用

<%= link_to "Profile", profiles_path %>

区别在于变量名称配置文件 s _path。由于索引网址的路径应为复数。

如果你的应用程序运行rake routes,你也可以看到所有路由 - 它是一个实时保护程序来调试路由问题。