Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4链接到未生成正确的资源路径_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4链接到未生成正确的资源路径

Ruby on rails Rails 4链接到未生成正确的资源路径,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我已经设置了一个资源,在url中使用:slug而不是:id 我的rake路由看起来像 Prefix Verb URI Pattern Controller#Action root GET / home#index home GET / home#index course_type GET /courses/:slug(.:format) co

我已经设置了一个资源,在url中使用:slug而不是:id

我的
rake路由
看起来像

     Prefix Verb URI Pattern              Controller#Action
       root GET /                        home#index
       home GET /                        home#index
course_type GET /courses/:slug(.:format) course_type#show
但是,在我的模板(haml)中

= link_to course_type.name, course_type
它链接到
/courses/1
课程类型
具有
id:1
slug:“类型a”
)。它不应该指向
/courses/type_a

我还尝试使用
show\u-course\u-type\u-path
[:show,course\u-type]
,但它们都提出了
未定义的方法:show\u-course\u-type\u-path


如何让rails生成正确的路径?

假设您的资源是CourseType,并且您有一个@course\u类型的实例变量:

link_to @course_type.name, course_type_path(@course_type.name)
这应该是这样的:

<a href="/courses/course-name">course-name</a>

这是可行的,但有没有办法让rails知道如何为link_自动执行此操作?似乎course\u type\u path(@course\u type)正在生成id为的路径。我可以在模型/控制器上指定使用slug吗?是的!在CourseType模型中,需要重写“to_param”方法。添加到参数将修复我的初始链接。完美的
def to_param
  name
end