首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过link_to函数链接rails中的方法

通过link_to函数链接rails中的方法
EN

Stack Overflow用户
提问于 2011-08-15 16:31:21
回答 2查看 2.4K关注 0票数 0

最近,我向我的项目控制器(projects_controller.rb)添加了一个新方法(称为“帮助”),并在视图目录中创建了一个"help.html.haml“。

我在routes.rb中添加了以下路由:

代码语言:javascript
复制
 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中有以下代码:

代码语言:javascript
复制
 %li= link_to 'quick help', project_path(@project)

但是这段代码只带我到http://localhost:3001/projects/id。是否可以使用/help函数将“link_to”添加到URL,或者有更好的方法来做到这一点?

我衷心感谢任何帮助。非常感谢你抽出时间来!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-15 17:15:57

让我们看一下您定义的路由的组件:

代码语言:javascript
复制
get :help, :on => :member, :as => :help

  • 第一个参数是:help,这是将被调用的操作的名称。
  • 第二个部分是:on => :member,这意味着操作在特定记录上的作用域。因此,您必须传递一个id来调用它,
  • 第三部分:as => :help定义了可以用来生成url的助手方法的名称。这就是你要找的。--

基本上,help_project_path(@project)将生成您需要的url。所以,链接应该是这样的:

代码语言:javascript
复制
%li= link_to 'quick help', help_project_path(@project)

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

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

票数 2
EN

Stack Overflow用户

发布于 2011-08-15 16:55:31

帮助方法做什么?它是每个项目的帮助方法,还是一般项目的帮助。您可以如下所示创建一个路由:

代码语言:javascript
复制
match '/projects/help/:id' => 'projects#help', :via => :get

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

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

使用project_path(@project)使用的link_to将带您到项目显示对象@project的页面。

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

代码语言:javascript
复制
match '/help', :controller => 'other', :action => 'help', :via => :get

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7067741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档