Rails 3.1.3使用anchor属性和posts_to标签从posts / index到posts / show / id不起作用

我在我的post/索引视图上使用了link_to标签,并希望将其链接到我的post/ show / id视图,并使用锚点向下滚动到评论表单。 出于某种原因,我无法让锚点工作。 这是我的代码:

在post/索引中

 'comment_form' %> 

这无法将#符号附加到链接的末尾,因此它只是localhost:3000 / posts / id。 我还为link_to尝试过很多变种,包括:

  'comment_form' %> 

  'posts', :action => 'show', :id => @post, :anchor => 'comment_form' %> 

但我没有运气。

这是我的post#show action:

  def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @post } end end 

这里是我希望锚滚动到的post/显示视图:

 

Add a comment:

此外,如果我链接到索引页面上的某些内容,上面的任何一个都可以工作,因为我可以看到散列#已被附加到输出的url。 由于某种原因,在尝试链接到节目页面时它无法正常工作。 对此有何帮助?

试试这个:

 link_to('Add a comment', post_path(post, :anchor => 'comment_form')) 

link_to的第二个参数通常按原样传递给url_for ,第三个参数用作最终生成的元素的属性哈希。

因此,在您的第一个示例中,您将Post对象作为第二个参数传递,并将散列作为第三个参数传递。 只有Post会被传递给url_for 。 它永远不会看到包含:anchor选项的哈希,因此您不会在生成的URL的末尾看到锚点。 (但你可能会在生成的元素上看到一个anchor="comment_form"属性。)

你的第二个例子在语法上是不正确的。 我想这导致了一个错误。

你的第三个例子……应该有用。 我不确定为什么没有:-)