Rails覆盖渲染

时间:2016-04-05 02:41:25

标签: ruby-on-rails content-negotiation

是否可以覆盖Rails对:html响应的呈现行为?我想总是渲染相同的模板(忽略魔术视图的发现)。

我正在编写一个单页应用程序,这似乎应该是可能的...基本上如果它被请求为:json它应该呈现JSON,但如果它被请求为:html它应该无论如何将数据传递到同一视图(它将在体内呈现为JSON)。

3 个答案:

答案 0 :(得分:1)

尝试删除application.html.erb上的yield部分,然后您将始终获得application.html.erb而不会有任何部分内容。

答案 1 :(得分:0)

如果您定义一个视图,然后在每个控制器上执行每个操作后呈现该视图,该怎么办?像这样:

应用程序/控制器/ home_controller.rb

class HomeController < ApplicationController
  def home
  end
end

应用程序/视图/家/ home.html.erb

<!-- Whatever html code and script tags here -->

应用程序/控制器/ another_controller.rb

class AnotherController < ApplicationController
  def action
    render "home/home"
  end
end

你甚至可以定义一个after_filter

修改

我试过这个并且它有效。后过滤器似乎不起作用。

答案 2 :(得分:0)

为什么不将JSON数据作为实例变量传递?

<强>控制器

@json_data = whatever_model.to_json

<强> application.html.erb

<script>
<%= @json_data %>
</script>
相关问题