Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – url_for定制RESTful资源(复合键;不只是id)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
给定以下资源定义: @H_935_2@map.resources :posts,:except => [:show] map.post '/:year/:month/:slug,:controller => :posts,:action => :show

我可以使用这个语法使url_for为我工作:

<%= link_to @post.title,post_url(:year => '2010',:month => '02',:slug => 'test') %>

但是有没有办法使这项工作?

<%= link_to @post.title,@post %>

目前它抛出了这个错误:

No route matches {:year=>#<Post id: 1,title: "test",(...)>,:controller=>"posts",:action=>"show"}

显然,它将@post对象传递给第一个路由参数(看起来像一个Rails错误…).但我可以为我工作吗?我会补充说,与default_url_options的混乱是一个死胡同.

解决方案只能在Rails 3.x中工作,但我不想使用任何插件.

解决方法

如何修复postController的url_for?可能不是非常优雅,但它是干,事情应该工作.
# app/controllers/posts_controller.rb 
class PostsController < ApplicationController

  protected

    def url_for(options = {} )
      if options[:year].class.to_s == "Post"
        obj = options[:year]
        options[:year] = obj.year
        options[:month] = obj.month
        options[:slug] = obj.slug
      end
      super(options)
    end

end

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – url_for定制RESTful资源(复合键;不只是id)全部内容,希望文章能够帮你解决ruby-on-rails – url_for定制RESTful资源(复合键;不只是id)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。