Rails控制器,可以在respond_to格式块中添加应用程序代码吗?

时间:2010-09-04 04:48:02

标签: ruby-on-rails

我想知道在respond_to中传递给format.xxx的块内添加应用程序代码是否合理?例如,rails代码生成器为我们提供了类似的东西:

@object = Object.new
...
...  several lines of other app code ...
...
respond_to do |format|
 format.xml {render :xml => @object}
end

但是,如果我改为这样做会怎么样:

respond_to do |format|
 format.xml {
  @object = Object.new
  ...
  ...  several lines of other app code ...
  ...
  render :xml => @object
 }
end

这种方法有什么“错误”或不安全吗?请注意,对于您是否会这样做,我对您的意见不感兴趣,我只想知道这种方法是否存在任何缺点或安全风险等。

1 个答案:

答案 0 :(得分:2)

我一直没有使用Rails,但我认为没有任何理由不将代码放入块中。

假设您有多个格式要响应,我会说在块之外放置多个格式的通用代码,并在块中放置特定于该格式的任何格式。

例如

@object = Object.new

respond_to do |format|
  format.html {
    @html_settings = {}
  }
  format.xml {
    @xml_settings = {}
  }
}

如果你只回应一种格式,那么无论它在哪里都无关紧要。