代码之家  ›  专栏  ›  技术社区  ›  amaseuk

Rails路由帮助

  •  1
  • amaseuk  · 技术社区  · 14 年前

    我希望用户帖子的url如下所示:

    example.com/users/username/post-姓名

    我该怎么设置?

    目前,post模型包含:

    def to_param
        name.parameterize
    end 
    

    routes.rb 包含:

      map.resources :users
      map.resources :posts
    

    我需要做些什么来实现这一点?

    还添加了

    map.resources :users do |user|
        user.resources :posts
    end
    
    3 回复  |  直到 14 年前
        1
  •  1
  •   BitOfUniverse    14 年前

    map.resources :users do |user|
      user.connect ':name/:action', :controller => 'posts', :defaults => {:action => 'show'}
    end 
    


    example.com/users/username/post-姓名
    example.com/users/username/post-名称/编辑(任何操作)

        2
  •  1
  •   Bohdan    14 年前

    嗨,让你的应用程序能够识别

    example.com/users/username/post-name
    

     map.connect 'users/:username/:post', :controller => "users", :action => "test"
    

    params[:username] params[:post] 控制器内部 test 行动之后你应该定义它 map.resources :users map ':controller/:action/:id'

        3
  •  0
  •   Marten Veldthuis    14 年前

    to_param看起来没问题,但是内置的帮助程序没有像您希望的那样链接到嵌套资源,您必须使用 user_post_path(user, post) . 当然,你可以自己写 post_path helper方法,它确实按您想要的方式工作。

    def post_path(post)
      url_for [post.user, post]
    end