从helper_method渲染部分

时间:2011-09-02 22:52:19

标签: ruby-on-rails partial-views ruby-on-rails-3.1 helpermethods

好的,我在应用程序控制器中有一个辅助方法:

def run_test(test_name)
  #computation stuff
  render :partial => test_name
end

我在观点中称之为:

<%= run_test("testpartial") %>

并且只用1渲染它(虽然......渲染部分似乎返回一个数组而不仅仅是部分内容?),但是如果我在视图中放入run_test辅助调用两次,我会得到一个双渲染错误,不应该发生偏僻。

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

控制器中的

render与视图中的render是不同的方法。控制器最终在视图上调用render,但控制器的render方法本身只能调用一次。它看起来像这样:

# Check for double render errors and set the content_type after rendering.
def render(*args) #:nodoc:
  raise ::AbstractController::DoubleRenderError if response_body
  super
  self.content_type ||= Mime[formats.first].to_s
  response_body
end

注意如果多次调用它会如何引发?

当您致电helper_method时,您会为视图提供控制器render版本的代理,该版本不会以与ActionView相同的方式使用,< strong> ,与控制器不同,预计会被重复调用以呈现部分内容等等。

答案 1 :(得分:5)

在Rails 3.2中看起来像这样:

# application_helper.rb
def render_my_partial
  render "my_partial"
end

答案 2 :(得分:-2)

您可以尝试在视图助手

中使用render_to_string方法
render_to_string :partial => test_name, :layout => false