Ruby on rails 通过链接到函数链接到rails中的方法

Ruby on rails 通过链接到函数链接到rails中的方法,ruby-on-rails,methods,routes,haml,link-to,Ruby On Rails,Methods,Routes,Haml,Link To,我最近在我的项目控制器(projects\u controller.rb)中添加了一个新方法(称为“help”),并在views目录中创建了一个“help.html.haml” 我在routes.rb中添加了以下路由: resources :users, :only => [:new, :create, :edit, :update, :help] resources :projects, :module => 'users' do get :help, :on =>

我最近在我的项目控制器(projects\u controller.rb)中添加了一个新方法(称为“help”),并在views目录中创建了一个“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的帮助:

不幸的是,我不知道如何编写代码来链接到上面列出的帮助URL。到目前为止,我在index.html.haml中有以下代码:

 %li= link_to 'quick help', project_path(@project)
但是这个密码只带我去。是否可以使用link_to函数将“/help”添加到URL中,或者是否有更好的方法


我真诚地感谢任何帮助。非常感谢您抽出时间

这个方法有什么帮助?它是每个项目的帮助方法,还是一般项目的帮助方法。可以按如下方式创建管线:

match '/projects/help/:id' => 'projects#help', :via => :get
对于:via,您可以根据需要选择一种REST方法,即GET、POST、PUT等

如果您试图为项目创建一个帮助页面,这可能没有什么用处。每当您将URL设置为/projects/时,Rails将尝试将其路由到项目显示页面,并尝试使用作为项目ID

您正在使用的带有项目路径(@project)的链接将带您进入对象@project项目显示页面

所以,最后,这是你应该做的。我建议您创建一个单独的控制器,用于常规页面。比如说,您有一个控制器OtherController

match '/help', :controller => 'other', :action => 'help', :via => :get

然后为该视图创建help.html.erb页面。希望这对您有用。

让我们看看您定义的路线的组成部分:

get :help, :on => :member, :as => :help
  • 第一个参数是
    :help
    ,这是将调用的操作的名称
  • 第二部分是
    :on=>:member
    ,这意味着操作的范围是特定记录。因此,您必须传递一个id才能调用它
  • 第三部分,
    :as=>:help
    ,定义了可用于生成url的助手方法的名称。这就是你要找的
基本上,
help\u project\u path(@project)
将生成您需要的url。因此,链接将如下所示:

%li= link_to 'quick help', help_project_path(@project)
请注意,您实际上并不需要
:as=>:help
路径,默认情况下它应该是
help
。如果您需要不同的助手名称,通常会使用该名称


我想指出的另一件事是,您不是在创建“help.html.haml链接”,而是在
项目
控制器上创建指向
帮助
操作的链接。如果有必要,操作可以重定向到某个地方,您不必渲染视图。我只是这么说,因为听起来你对这件事还是有点陌生,如果我只是误解了,很抱歉。

Andrew,非常感谢你,伙计!我感谢你花时间把一切解释得如此清楚。这是我非常喜欢的事情,因为,你猜到了,我对ROR比较陌生,所以我得到的细节和解释越多,我就越能前进。非常感谢!