web-dev-qa-db-ja.com

Rails 3のルートでIDにアンカーをどのように使用しますか?

postscommentsのブログを想像してみてください。個々のコメントのURLは_posts/741/comments/1220_の場合があります。

ただし、URLを_posts/741#1220_、または_posts/741#comment-1230_にしたいのですが。

redirect_to comment_path(my_comment)が正しいURLを指すように、これを行う最も邪魔にならない方法は何ですか?

34
ClosureCowboy

あなたは単に使用することができます

redirect_to post_path(comment.post, :anchor => "comment-#{comment.id}")

アンカーを使用してURLを手動で作成します。そうすれば、コメントへの絶対URLをposts/:post_id/comments/:comment_idとしてルートに含めることができます。たとえば、ヘルパーメソッドを作成することもできます。 application_controller.rb

class ApplicationController
  helper :comment_link

  def comment_link(comment)
    post_path(comment.post, :anchor => "comment-#{comment.id}")
  end
end
65
Holger Just

アンカービルダーを1か所に保管することをお勧めします。

class Comment
  ...
  def anchor
    "comment-#{id}#{created_at.to_i}"
  end
end

その後

post_path(comment.post, :anchor => comment.anchor)

created_at.to_iを追加すると、データが少し不明瞭になり、何も害はありません。

0
Blair Anderson