2012-01-25 12 views
1

在一個應用程序的工作,其中在application_helper.rb被定義爲這樣的方法PAGE_TITLE發射:如何在應用程序助手中定義的視圖中轉義page_title?誤差(無)從視圖

def page_title(title = nil) 
    if title.present? 
     content_for(:page_title) { "#{title} - SomeDomain.tld" } 
    else 
     content_for?(:page_title) ? content_for(:page_title) : "SomeDomain.tld" 
    end 
    end 

在視圖中我需要通過對成一些各環節,例如,這PAGE_TITLE:

= link_to "http://www.some_bookmark_site.com/submit?url=#{URI::escape(request.url)}&title=#{URI::escape(page_title)}", :target =>"_blank" do 

但是當我這樣做,我得到一個零誤差"undefined method 'each_byte' for nil:NilClass"這顯然表明該方法的返回零...

抑或是我需要傳遞一個VAR在這裏呢?希望澄清如何在這些條件下正確地形成這一切。

完全跟蹤:http://pastebin.com/gegDETUp

只是想指出,我仍然在尋找這個問題的答案。

+0

確保你正在做'URI.escape' ...我看到一個錯字。整個堆棧跟蹤也會有幫助。 – rkb

+0

是的,對不起,這是一個錯字,因爲我從使用的nokogiri方法中改變了它,得到了相同的結果。爲您添加完整的跟蹤。 – ylluminate

+0

@rkb所以根據您的要求更新後有任何新的想法或更新? – ylluminate

回答

0

當我正確理解你的問題時,你問爲什麼你的page_title方法返回nil

,如果是那樣的話,你應該看看如何使用content_foryield內模板:

# in the helper 
content_for(:page_title, 'title') # => nil 

# in the view 
yield :page_title # => here goes the 'title' 

http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

+0

能夠使用這樣的東西,使其更加理智:http://zetetic.net/blog/2010/05/18/pretty-page-title-in-rails-3/ – ylluminate

相關問題