render
,從視圖中調用時,返回傳入模板或部分的字符串呈現;您可以將該字符串嵌入視圖中。儘管如此請注意:
- 您必須在類型後綴/擴展名後附加模板名稱。如果你不這樣做,Rails可能會對你所調用的模板文件感到困惑;即:它可以選擇
list.html.erb
而不是list.json.jbuilder
。如果您打電話從list.html.erb
,試圖呈現list.html.erb
導致無限遞歸和SystemStackError。對render
使用:format
選項似乎不起作用。
- 您必須指定模板的合格路徑;它不會僅僅因爲
list.json.jbuilder
與list.html.erb
位於同一個目錄中而找到「list.json」的正確模板。
- 您需要將
render
調用的輸出通過raw
;否則,當它嵌入到視圖中時,它會被轉義。
所以,你的榜樣,你可能會這樣寫,假設你的模板,在/app/views/foo
:
<div data-list="<%= raw render(:template => "foo/list.json", :locals => { :contents => @contents }) %>"></div>
這是這樣一個普羅蒂普!謝謝。你也可以使用'<%== %>'而不是'raw' –
我被挑戰使用jbuilder渲染一個html部分爲json propery。 json.prop render(:template =>'partials/_resort_summary',:locals => {resort:@resort}) – dc10
非常感謝。我花了相當長的一段時間搞清楚我該怎麼做。 –