2011-07-08 15 views
2

我正在使用Ruby on Rails 3創建我的Web應用程序。 我不想爲每個微小的部分模板創建一個模板文件,所以我試圖使用content_for方法將它們合併到一個文件中,但它不起作用。如何將多個部分模板合併到一個文件中?

我的ERB模板文件如下。

佈局/ _fragments.html.erb:包含一些部分模板內容

<% content_for :twitter_checkbox do -%> 
    <% can_post_twitter = current_user && current_user.twitter_oauth %> 
    <% label_text = can_post_twitter ? "Post to Twitter" : "Set up your Twitter account" %> 
    <%= label_tag :twitter, label_text %> 
    <%= check_box_tag :twitter, 0, false, :disabled => !can_post_twitter %> 
<%- end %> 

<% content_for :other_content_of_partial_template do -%> # content of another partial template 
... 

佈局/ application.html.erb

<!DOCTYPE html> 
<html> 
    ... 
    <body> 
    <%= yield %> 
    </body> 
</html> 
<%= render 'layouts/fragments', :formats => :erb %> 

佈局/ _form.html.erb

<%= form_for(@entry) do |f| %> 
    ... 
    <%= content_for :twitter_checkbox %> # it shows nothing 
<% end %> 

這種方式有什麼問題? 有沒有其他更好的方法將多個部分模板寫入一個文件?

回答

0

您錯過了第二個代碼段中的=登錄,它會告訴Rails顯示返回的文本。

<%= form_for(@entry) do |f| %> 
    ... 
    <%= content_for :twitter_checkbox %> # Note <%= - it should now show stuff 
<% end %> 
+0

謝謝你,我修正了,但它仍然沒有顯示任何東西。 – yaotti

1

我想你已經運行_form部分前主佈局不得不運行_fragments局部的機會,所以當你顯示片段,它們尚未建立。

該操作在佈局之前呈現,而不是在之後呈現。從您的操作調用_fragments而不是佈局應該清楚這是否是問題。至少,我相信如此;-)

相關問題