2017-01-19 46 views
-2

部分我剛剛實施的設計Invitable寶石在我的Rails應用程序,現在我有讓我的諧音來呈現的問題。我想這是因爲絕對路徑和相對路徑。Rails的渲染從子目錄

我猶豫,因爲我所有的其他觀點的改變很大,我application.html.erb依賴於正在呈現的諧音。那麼,還有另一種方法可以使這一切工作?

這裏是目錄樹:

app/ 
-controllers/ 
---application_controller.rb 
---users/ 
-----invitations_controller.rb 
-views/ 
---layouts/ 
-----application.html.erb 
-----_back_buttons.html.erb 
-----_footer.html.erb 
-----_navigation.html.erb 
---users/ 
-----invitations/ 
-------new.html.erb 
-------edit.html.erb 

在我application.html.erb文件,我正在渲染視圖&諧音有:

<%= render partial: 'layouts/navigation' %> 
<%= render partial: 'layouts/topnav' %> 
<%= render partial: 'layouts/tour' %> 

<%= yield %> 

<%= render partial: 'layouts/footer' %> 
<%= javascript_include_tag 'footermanifest' %> 

而且在我的新觀點views/users/invitations/new.html.erb

<%= render partial: "/layouts/back_button" %> 
... the form 

不冰的絕對參照局部這裏(/)

這將加載layouts/_back_button.html.erb很好,但沒有其他的partials在application.html.erb負載。基本上,我有一個漂亮的空白頁面(由application.html.erb提供)。

我做得不對的,我怎麼嵌套在views/users/invitations/new.html.erb還是其他什麼東西?

UPDATE 開始思考......因爲我不想PPL創建一個「新」用戶帳戶看到導航和一切,我強迫他們不同的佈局controllers/application_controller.rb

def layout_by_resource 
    if devise_controller? && resource_name == :user && action_name == "new" 
     "external_pages" 
    else 
     "application" 
    end 
end 

那麼,有沒有更進一步指定layout_by_resource讓我`控制器/用戶/ invitation_controller.rb不屬於此範圍內的方法嗎?

+0

我希望你的意思'application.html.erb'而不是'application.rb' –

+0

@maxple是的,對不起...... – Godzilla74

+0

在正常工作的那個例子,你必須在部分路徑的開始'/'(斜線)。我想知道是否將其添加到其他人會工作。 –

回答

0

好了,而我是希望少一些「重複自己」,而是迫使控制器來呈現不同的佈局工作:

class Users::InvitationsController < Devise::InvitationsController 
    before_action :get_company_and_locations 
    layout "application" 

    def new 
    ... 
    end 
end