[英]Rails render partial from sub-directory
我刚刚在我的 rails 应用程序中实现了 Devise Invitable gem,现在我在渲染我的部分时遇到了问题。 我想这是因为绝对路径与相对路径。
我不愿在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
,但没有加载application.html.erb
中的其他部分。 基本上,我有一个带有表单的非常空的页面(由 application.html.erb 提供)。
我是否在嵌套views/users/invitations/new.html.erb
或其他方面做错了什么?
更新开始思考......因为我不希望 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
以便我的`controller/user/invitation_controller.rb 不在此范围内?
好的,虽然我希望少一点“重复自己”,但强制控制器呈现不同的布局有效:
class Users::InvitationsController < Devise::InvitationsController
before_action :get_company_and_locations
layout "application"
def new
...
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.