Ruby on rails Rails 4链接到未生成正确的资源路径
我已经设置了一个资源,在url中使用:slug而不是:id 我的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
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