2009-07-22 14 views
10

基本的なチュートリアルでRoRのスキルを開発していたときに、問題が発生しました。私が達成しようとしているのは、個別の索引や個別のビューを持たずに、投稿に属するコメントを持つことです。この部分は簡単でした。RailsルーティングとURIフラグメント識別子

ここは厳しいものです。私はpost_comment_urlfragment identifierhttp://example.com/posts/2#comment-4で住所を返すようにします。 redirect_toは、:anchorパラメータ(これは、ルビの方法とは単純なものではありません)なしで、最も簡単な形式で使用できます。

どうすればよいですか?

答えて

12

代わりにRailsのデフォルトの動作を変更することで、おそらくヘルパーメソッドでは、あなたのニーズをラップする方が良いと思います:

# 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 

helperへの呼び出しは、あなたが、あなたの意見では、そのメソッドにアクセスできるようになりますあなたのコントローラーと同じように。

+0

おそらくこれは良い解決策ですが、ネイティブのpost_comment_urlメソッドを使用する規則を破るので、このラッパーの考え方は嫌いです。私はpost_comment_pathのために別のヘルパーが必要であることにも気づいた。それが解決策として働いているので、私はそれが十分に乾燥しているとは思わない。 – samuil

+0

post_comment_urlのRails規約に違反すると、コメントアンカー付きの投稿URLを返すことで、アンカーオプションを毎回渡す必要があります(実際にはより良い方法と言えます。 。) 私はDRYをほとんど何もしない理由として警告します。 DRYという用語は、Agileという言葉のようなものです。それは原則と実践の集まりを記述しています。 – nakajima

+2

DRYは原理の謎めいたコレクションではありません。つまり、すべての情報がコード内で一度しか表示されないようにする必要があります。ヘルパーより優れた解決策がない場合(私はまだRailsには新しくありませんので、いくつかのデフォルトメソッドを変更して解決策を実装するのが簡単かどうかは分かりません)将来のRailsのバージョン。 – samuil

関連する問題