最近,我向我的项目控制器(projects_controller.rb)添加了一个新方法(称为“帮助”),并在视图目录中创建了一个"help.html.haml“。
我在routes.rb中添加了以下路由:
resources :users, :only => [:new, :create, :edit, :update, :help]
resources :projects, :module => 'users' do
get :help, :on => :member, :as => :help
end我的目标是在一个单独的视图上创建一个链接(让我们称之为index.html.haml),该链接将链接到help.html.haml。注意:目前,我的路由设置为显示以下URL的帮助:http://localhost:3001/projects/id/help
不幸的是,我不知道如何编写代码链接到上面列出的帮助URL。到目前为止,我在index.html.haml中有以下代码:
%li= link_to 'quick help', project_path(@project)但是这段代码只带我到http://localhost:3001/projects/id。是否可以使用/help函数将“link_to”添加到URL,或者有更好的方法来做到这一点?
我衷心感谢任何帮助。非常感谢你抽出时间来!
发布于 2011-08-15 17:15:57
让我们看一下您定义的路由的组件:
get :help, :on => :member, :as => :help:help,这是将被调用的操作的名称。:on => :member,这意味着操作在特定记录上的作用域。因此,您必须传递一个id来调用它,:as => :help定义了可以用来生成url的助手方法的名称。这就是你要找的。--基本上,help_project_path(@project)将生成您需要的url。所以,链接应该是这样的:
%li= link_to 'quick help', help_project_path(@project)注意,您并不真正需要:as => :help路径,默认情况下它应该是help。如果您想要一个不同的助手名称,通常会使用这个名称。
我想指出的另一件事是,您不是要创建“到help.html.haml的链接”,而是要在projects控制器上创建一个指向help操作的链接。如果有必要,操作可以重定向到某个地方,不必呈现视图。我只是说这句话,因为听起来你对这件事还有点陌生,如果我只是误会了,很抱歉。
发布于 2011-08-15 16:55:31
帮助方法做什么?它是每个项目的帮助方法,还是一般项目的帮助。您可以如下所示创建一个路由:
match '/projects/help/:id' => 'projects#help', :via => :getfor :via,您根据需要选择REST方法,即GET、POST、PUT等。
如果您试图为一般项目创建帮助页面,这可能并不有用。每当您有/projects/<>的URL时,Rails将尝试将其路由到项目显示页面,并尝试使用<>作为项目的ID。
使用project_path(@project)使用的link_to将带您到项目显示对象@project的页面。
所以,最后,这是你应该做的。我建议您创建一个单独的控制器,用于通用页面。比如说,您有一个控制器OtherController
match '/help', :controller => 'other', :action => 'help', :via => :get然后为视图创建一个help.html.erb页面。希望这对你有用。
https://stackoverflow.com/questions/7067741
复制相似问题