2012-02-12 8 views
7

Tôi đang sử dụng thẻ link_to trên bài đăng/chỉ mục của tôi và muốn liên kết nó với bài đăng/hiển thị/id của tôi với một neo làm cho nó cuộn xuống biểu mẫu nhận xét. Vì một lý do nào đó tôi không thể lấy được cái neo để làm việc. Đây là mã của tôi:Rails 3.1.3 sử dụng thuộc tính anchor với thẻ link_to từ bài viết/chỉ mục tới bài viết/show/id không hoạt động

Trong bài viết/index

<%= link_to 'Add a Comment', post, :anchor => 'comment_form' %> 

này thất bại trong việc thêm dấu # để kết thúc liên kết, vì vậy nó chỉ là localhost: 3000/posts/id. Tôi cũng đã thử nhiều biến thể cho link_to, bao gồm:

<%= link_to 'Add a Comment', post(:anchor => 'comment_form' %> 

<%= link_to 'Add a Comment', :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_form' %> 

nhưng tôi đã không có may mắn.

Dưới đây là bài viết # show hành động của tôi:

def show 
    @post = Post.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @post } 
    end 
    end 

và đây là quan điểm bài viết/hiển thị nơi tôi muốn neo để di chuyển đến:

<h2><a name="comment_form" id="comment_form">Add a comment:</a></h2> 

Hơn nữa, bất kỳ ở trên hoạt động nếu tôi liên kết đến một cái gì đó trên trang chỉ mục, vì tôi có thể thấy hàm băm # đã được thêm vào url được xuất. Đối với một số lý do nó không hoạt động khi cố gắng liên kết đến trang hiển thị. Bất kỳ trợ giúp với điều này?

Trả lời

14

Hãy thử điều này:

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

Đối số thứ hai để link_to thường trôi qua như nó vốn có để url_for, và đối số thứ ba được sử dụng như một thuộc tính băm cho <a> yếu tố mà cuối cùng được tạo ra.

Vì vậy, trong ví dụ đầu tiên của bạn, bạn đang chuyển đối tượng Post làm đối số thứ hai và băm làm đối số thứ ba. Chỉ Post mới được chuyển đến url_for. Nó không bao giờ thấy hàm băm có chứa tùy chọn :anchor, do đó bạn sẽ không thấy neo ở cuối URL được tạo. (Nhưng có thể bạn sẽ thấy thuộc tính anchor="comment_form" trên phần tử <a> được tạo.)

Ví dụ thứ hai của bạn không chính xác về cú pháp. Tôi tưởng tượng rằng kết quả là một lỗi.

Ví dụ thứ ba của bạn ... nên đã hoạt động. Tôi không chắc chắn lý do tại sao nó không :-)