2011-07-28 14 views
0

Rails 3を使用していて、クエリ文字列をリンクに挿入できません。Ruby on Railsのクエリ文字列が機能しない

私は投稿のテーブルを持っており、それぞれの投稿にコメントがあります。投稿のインデックスページには、コメントに「返信」するリンクが付いています。私は、 "返信"へのリンクにクエリ文字列を挿入したい...それは動作していません。私が使用している線はこのように見えます。

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

このリンクがうまくポストとコメントフォームを表示しますが、クエリ文字列が決してURLにそれを行うものではありません。なぜこうなった?

+0

私は質問を理解できません。もっと正確には、返信がどのように見えるかわかりません – apneadiving

+0

このリンクの要点は、 ".../posts/1?reply = @ commenter:"のようなURLのためのものです。 起こって、なぜ私は理解できません。 – Will

+0

'comment.post'は有効なURLですか?あなたの '!viewing_post'条件は確かですか? – apneadiving

答えて

3

link_toはURLの責任を負わないため、動作しません。 link_toはタグのみを管理します。あなたが名前のルートを使用してパラメータを持つのURL /パスを作成することができ、URLにパラメータを指定する必要があります。

は次のようにあなたのroutes.rbをの名前付きルートを作成します。

resources :posts do 
    resources :comments 
end 

、あなたはパラメータを追加することができます以下のような:で

<a href="comments/:comment_id/posts/:[email protected]_commenter_is:">Reply</a> 

以上に関する情報::0

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

これはになります

サイモン

+0

これはまさに私が必要としていたものです!私はルート設定を持っていた、私はちょうどそこに返信文字列を配置する方法について混乱していた。ありがとう! – Will

0

あなたcomment.postがパスを誘導することができる資源、あなたが任意の追加のGetDataを渡すことはできませんこの方法です - ので、あなたのURLにクエリ文字列を追加するために、次の操作を実行する必要があります:

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

関連する問題