我有一個控制器,可對html
和js
作出響應。 html
視圖呈現整個頁面(包括頁眉和頁腳),而js
僅替換#main
。除了頁眉和頁腳,這兩種格式都呈現相同的內容。我能得到這個效果有三個文件:Rails:渲染視圖(不是部分)從視圖內
_show.html.erb
<div>Content!</div>
show.html.erb
<%= render "show" %>
show.js.erb
$("#main").fadeIn("<%= escape_javascript(render 'show') %>");
這工作,但如果我並不需要一個單獨的_show
部分我更喜歡。不幸的是,這並不工作:
show.html.erb
<div>Content!</div>
show.js.erb
$("#main").fadeIn("<%= escape_javascript(render 'show') %>");
鐵軌將尋找show
部分,而不是實際的看法。
有沒有辦法讓Rails尋找視圖文件,而不是部分?
你可以使用': F ile'選項,例如':file =>'show''。渲染助手會隱式地將'render'yourview''的字符串參數變成'render:partial =>'yourview''。然而,你將遇到的問題是,js操作中的查找上下文將會解析js版本的「show」,可能會導致無限循環或其他問題。 – numbers1311407 2013-05-02 00:42:38
謝天謝地,它不會循環。至少,還沒有。現在我得到一個「缺少模板」的錯誤。看起來它甚至無法找到自己。 – nullnullnull 2013-05-02 00:46:53
在另一個視圖內渲染非局部視圖並不完全是Rails Way™。您目前的解決方案可能會更好。如果你對命名感到奇怪,請將它重命名爲_body。在這種情況下你將看到的常見事物是'render(@resource)',它變成了部分路徑,例如'資源/ _resource'。 – numbers1311407 2013-05-02 00:54:36