在Mustache中使用参数生成Rails

Mit*_*tch 5 yield ruby-on-rails mustache

我正在使用这个宝石的 Rails 3中的Mustache,当我尝试在我通常使用的实例中使用Mustache时,我遇到了障碍yield :parameter.

<html>
  <head>
    <title><%= yield :page_title %></title>
  </head>
</html>
Run Code Online (Sandbox Code Playgroud)

显示帖子视图:

<% content_for :page_title do %>
  <%= SettingsList.site_title + " " + @post.title %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

有没有办法用Mustache重现这种行为?在编译模板时,似乎有一种方法可以解决这个问题:

mustache = MustacheClass.new
mustache[:yield_page_title] = content_for(:page_title)
Run Code Online (Sandbox Code Playgroud)

但似乎使用mustache_rails3 gem来解决当前的设置会很麻烦.

我也对任何答案持开放yield态度,指出一种完全避免这种方法的好方法.可以在{{page_title}}标签中输入足够的逻辑来处理我设置标题的所有不同情况,但这似乎远非理想.

Car*_*III 0

Mustache 模板的所有逻辑都应放入视图文件中。例如,您的show.html.mustache模板应该有一个关联的 Ruby 视图文件,show.rb您可以在其中放置模板的任何自定义逻辑。

该模板将使用一个{{page_title}}调用

<html>
  <head>
    <title>{{page_title}}</title>
  </head>
</html>
Run Code Online (Sandbox Code Playgroud)

视图文件将定义一个page_title方法来填充模板

# inside show.rb
def page_title
  SettingsList.site_title + " " + @post.title
end
Run Code Online (Sandbox Code Playgroud)