2013-08-03 29 views
0

获取路由我想在我的routes.rb中创建一个指向具有pdfdownload方法的“courses”控制器的新路由。该路线应该采用2个参数:course_id和user_id。我认为它应该是这样的:Rails通过参数

get "/courses/pdfdownload/:course_id/:user_id" 

课程控制器和一切工作正常,直到我添加上面的行。课程控制器有一个名为pdfdownload的方法。然而,当我尝试启动服务器(轨道S),我收到以下错误:

warning: already initialized constant Mime::PDF 
warning: previous definition of PDF was here 
Exiting 
`default_controller_and_action': missing :controller (ArgumentError) 

当我键入耙:路线我得到:

missing :controller 

课程控制器现有的和是用很多方法工作得很好。在我将此行更改为:

get "/courses/pdfdownload" 

服务器启动。

轨道指导说,在“3.2动态细分”,它必须这样写的:

get ':controller/:action/:id/:user_id' 

请告诉我错在这里?非常感谢你!

更新:我使用视图以下链接:

<%= link_to "PDF", courses_pdfdownload_path(@course.id, user.id) %> 
+0

也许是这样的:'得到 “/场/ PDF文档下载/:COURSE_ID /:USER_ID”:到=>“控制器#action''会的工作? – Brian

+0

服务器启动,但当我打开链接所在的页面时,出现以下错误:#<#:0x007fceafdcb1a0>'未定义的方法'courses_pdfdownload_path'。感谢您的建议! – Linus

回答

1

请试一试

get "/courses/pdfdownload/:course_id/:user_id" => "courses#pdfdownload", :as => "courses_pdfdownload" 
+0

您的解决方案似乎是唯一可行的解​​决方案。你能向我解释为什么从指南路线不工作,你的?谢谢大家! – Linus

+1

您在视图中使用路线助手“courses_pdfdownload_path”。你可以看到这个路由助手没有显示在输出中,而你没有明确地定义它。所以,我添加了:as =>“courses_pdfdownload”,并且我在耙路线中获得了路线助手。 –

+0

非常感谢!这是否意味着如果这个路由帮助程序(在rake:routes的左边站点)丢失了,实际上我没有可以为这个方法调用的路由? – Linus

1

尝试match "/courses/pdfdownload/:course_id/:user_id" => "courses#pdfdownload"

1

正确的路线是:

get '/courses/pdfdownload/:course_id/:user_id', to: 'courses#pdfdownload' 

但对于一个更好的REST的路线,我宁愿它改成这样:

get '/courses/pdfdownload/:id/:user_id', to: 'courses#pdfdownload' 

与一个Course资源的行动的交易已经由控制器处理动作的名称隐含的事实。所以你不需要拨打Course ID :course_id,只需:id就够了。

编辑

还要注意的是,你可以自定义路线助手的名字是这样的:

get '/courses/pdfdownload/:id/:user_id', to: 'courses#pdfdownload', as: 'courses_pdfdownload' 

您的路线帮手后会有courses_pdfdownload_path