我有一种情况,我将 json 对象返回到我的应用程序,这些对象是从 YML 文件构建的。因为要解析 yml 文件并将其作为 json 返回,我总是必须执行以下操作:
format.json { render json: YAML.load(render_to_string :file => File.join(Rails.root,'app','views','home','icons.yml.erb'), :layout => false ) }
我想通过创建(但是)导致 json 的自定义格式来缩短此操作,因此我不想创建新的 mime 类型。
我的想法是写:
format.myformat
它将自动在 views/mycontroller 目录中搜索myaction.myformat.erb,并自动解析 yaml 文件并将其作为 json 对象返回。
这可能吗?如果是,我最终该怎么做?
编辑 1: 我在 config/mime_types.rb 中找到了一个重要建议:
Mime::Type.register_alias "text/html", :iphone
所以我可以为 mime 类型设置别名,现在最大的问题是:如何定义给定格式的默认渲染操作,比如 format.html 呢?
如果我写
format.html
current_action.html.erb 将被自动渲染,如何选择正确的方法来渲染自定义格式?
编辑2:
我设法创建了这段代码(在控制器内部,通过我构建的一些辅助方法):
def icons
respond_to do |format|
format.extjson { render_to_extjson }
end
end
如果我写的话,可以让 Rails 理解:
def icons
respond_to do |format|
format.extjson
end
end
它必须这样做:
format.extjson { render_to_extjson }
默认情况下?