2011-06-21 81 views
2

在Rails 3中,當利用屬性link_to時,我的自定義rel值被覆蓋。當提供方法時,Rails覆蓋rel屬性

# my code: 
link_to 'Add to Favorites', 
    profile_favorites_path(profile), 
    :method => :post, 
    :class => 'button', 
    :rel => 'favorite' 

# expected result: 
<a href="/profiles/1/favorites" class="button" data-method="post" rel="favorite nofollow">Add to Favorites</a> 

# actual result: 
<a href="/profiles/1/favorites" class="button" data-method="post" rel="nofollow">Add to Favorites</a> 

這是一個Rails的bug /意外功能嗎?我如何使用內置的method功能,同時還提供了自定義的rel值?

回答

4

似乎只有在method設置爲get時才能指定rel屬性。

裏面action_view/helpers/url_helper.rbadd_method_to_attributes!可以是目前使用此看到邏輯軌道:

def add_method_to_attributes!(html_options, method) 
    html_options["rel"] = "nofollow" if method && method.to_s.downcase != "get" 
    html_options["data-method"] = method if method 
end 

這實際上是有道理的,你不會想鏈接爬行時,機器人有/蜘蛛張貼。

+0

你是對的,我不希望殭屍/蜘蛛在post URL後。但是,你應該能夠讓rel包含多個值。所以即使它等於我所期望的「最喜歡的nofollow」,蜘蛛也不會遵循鏈接,因爲它仍然包含「nofollow」。 –

+1

修復https://github.com/rails/rails/pull/1796 – jdeseno

+0

感謝您的超越,幫助我解決這個問題! –