Will
Will

Reputation: 9

Ruby on Rails query string not working

I am using Rails 3 and am having trouble inserting a query string into a link.

I have a table of posts, and each post has comments. On the posts index page I have each comment with a link to "reply" to the comment. I want to insert a query string in the link to "reply"... but it isn't working. The line I am using looks like this.

<%= link_to 'Reply', comment.post, :reply => "@"+comment.commenter+":" if !viewing_post? %>

This links to show the post and comment form just fine, but the query string never makes it into the url. Why is this happening?

Upvotes: 0

Views: 505

Answers (2)

sled
sled

Reputation: 14625

it does not work because link_to is not responsible for the url. link_to only manages the tag. You need to specify the parameters in the url, you can create urls/paths with parameters by using named routes:

create a named route in your routes.rb like:

resources :posts do
  resources :comments 
end

then you can add parameters like:

<%= 
    link_to 
        'Reply', 
         post_comment_path(
             comment.post,
             comment, 
             :reply => !viewing_post? ? "@"+comment.commenter+":" : nil
         )
%>

this will result in:

<a href="comments/:comment_id/posts/:post_id?reply=@whatever_commenter_is:">Reply</a>

more infos at: http://guides.rubyonrails.org/routing.html

Simon

Upvotes: 3

krichard
krichard

Reputation: 3694

Your comment.post is a resource from which a path can be derived, this way you cannot pass any additional GetData - so in order to append a query string to your url you would have to do the following:

<%= link_to "whatever",some_real_path(resource,:reply => "@dude7331")%>

Upvotes: 0

Related Questions