如何在rails中使用respond_to
传递多个参数?当我有多个实例变量时,我收到一个错误。但我有一个场景,我必须传递多个参数(instance variables
)通过respond_to
答案 0 :(得分:1)
respond_to实际上应该只返回一个单一的东西。 HTML模板渲染器也只返回一件事 - 但是将多个实例变量嵌入到HTML中。
所以你基本上必须对Json和XML做同样的事情:构造一个包含所有数据的对象。
这个代码就是一个例子:
def show
@post = Post.first
@users = Users.where(:active => true)
respond_to do |format|
format.html #this will simply render the view
format.json { render :json => { :post => @post, :users => @users } }
end
end
一旦你想通过Json输出这些多个值,你必须定义一个包含你想要返回的单个Json对象。
在我的示例中,这是一个包含帖子和用户的Json对象 - 从而为调用者提供与HTML视图相同的信息。
结果Json看起来像这样:
{
post: {..},
users: [..]
}
更新:
如果你使用它来渲染javascript,你有一个script.js.erb,你不必将任何内容传递给responds_to调用,而是可以在你的js.erb中使用所有实例变量(前缀为@)像在普通HTML视图中一样使用<%=%>语法。