Rails routing and URI fragment identifier

routes, ruby-on-rails

Solution

Instead of altering Rails' default behavior, it'd probably be better to wrap up your needs in a helper method:

# in app/controllers/application_controller.rb
class ApplicationController
  helper :comment_link

  def comment_link(comment)
    post_comment_url(comment.post, comment, :anchor => "comment-#{comment.id}")
  end
end

The call to `helper` will allow you to access that method in your views as well as your controllers.

Problem

When I was developing my RoR skills with some basic tutorials I encountered a problem. What I am trying to achieve is having comments belonging to posts, with no separate index or individual view. This part was easy. Here comes tough one. I want `post_comment_url` to return address with fragment identifier: `http://example.com/posts/2#comment-4`. It would allow me to use `redirect_to` in it's simplest form, without `:anchor` parameter (which would be against ruby way of keeping things simple). How to do that?

Original source