【问题标题】:linking to method in rails via link_to function通过 link_to 函数链接到 rails 中的方法
【发布时间】:2011-08-15 16:31:21
【问题描述】:

我最近向我的项目控制器 (projects_controller.rb) 添加了一个新方法(称为“help”),并在视图目录中创建了一个“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。是否可以使用 link_to 函数将“/help”添加到 URL 中,或者有更好的方法吗?

我真诚地感谢任何帮助。非常感谢您的宝贵时间!

【问题讨论】:

    标签: ruby-on-rails methods routes haml link-to


    【解决方案1】:

    让我们看看你定义的路由的组成部分:

    get :help, :on => :member, :as => :help
    
    • 第一个参数是:help,这是将要调用的操作的名称。
    • 第二部分是:on => :member,表示操作的范围是特定记录。因此,您将不得不传递一个 id 来调用它。
    • 第三部分,:as => :help,定义了可用于生成 url 的辅助方法的名称。这就是您要寻找的。​​li>

    基本上,help_project_path(@project) 会生成你需要的 url。所以,链接看起来像这样:

    %li= link_to 'quick help', help_project_path(@project)
    

    请注意,您实际上并不需要 :as => :help 路径,默认情况下它应该是 help。如果您想要不同的助手名称,通常会使用该名称。

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

    【讨论】:

    • 安德鲁,非常感谢伙计!感谢您花时间如此清楚地解释一切。这是我真正喜欢的事情,你猜对了,我对 ROR 比较陌生,所以我得到的细节和解释越多,我就会越进步。非常感谢!
    【解决方案2】:

    help 方法有什么作用?它是每个项目的帮助方法,还是一般项目的帮助。您可以按如下方式创建路由:

    match '/projects/help/:id' => 'projects#help', :via => :get
    

    对于 :via,您可以根据需要选择 REST 方法,即 GET、POST、PUT 等。

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

    您正在使用的链接到 project_path(@project) 会将您带到对象 @project项目展示 页面.

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多