我如何"延伸" Rails中的视图

时间:2014-05-19 04:13:18

标签: ruby-on-rails

所以我正在开发一个开源项目,由于版本不同,我不能指望有一个视图控制器。相反,这封电子邮件将通过一个版本的rake任务发送出去,而另一些版本则通过控制器完成。现在你明白我为什么要问一个不好的练习问题...

我有一个视图布局。有没有人知道在视图中指定视图布局的方法。一些伪代码:

<%= extends 'layout/test_mailer` %>
<h1> Hey there! </h1>

布局中通常会有yield

我希望我能够很好地解释这个问题。

3 个答案:

答案 0 :(得分:5)

<%= render partial: "hey_page", layout: "layout/test_mailer" %>

RailsGuides检查 3.4.3部分布局部分。

答案 1 :(得分:1)

我认为使用 yield content_for 可以解决问题。 [Guides]

# my_layout.html.erb

<%= yield :mail_view %>

# my_mail_view.html.erb

<%= content_for :mail_view do %>
  <!-- html -->
<% end %>

当然,如果你使用params来获得布局,这将是一个错误的答案。

然后,您还可以使用:

<%= render partial: "link_area", layout: "graybar" %>

答案 2 :(得分:0)

您可以使用

//controller action
def index 
    render layout: test_mailer
end

//view, index.html.erb
<h1> Hey there! </h1>

//view, layout/test_mail.html.erb
<html>....layout for you test mail  
<% yield %>
</html>