Rails 3 自定义 mime 类型 - 默认视图格式
我需要渲染一些没有布局的视图。 要跳过控制器操作中的 :render :layout=>false 行和 if else 逻辑, 我有自定义 mime 类型,例如 phtml(纯 html)。
Mime::Type.register "text/phtml", :phtml
这种格式需要渲染相同的 html 视图,但只是没有布局。我用应用程序中的这段代码完成了这个任务。控制器:
before_filter proc { |controller|
if params[:format] && params[:format]=='phtml'
controller.action_has_layout = false
controller.request.format = 'html'
end
}
首先,这很丑陋,其次我无法再以这种方式从控制器控制这种格式:
respond_to :phtml,:only=>:index
因为它总是以请求的格式 phtml 渲染视图。 有更好的解决方案吗?例子?我如何为视图格式添加别名?
非常感谢
I need to render some views without layout.
To skip line :render :layout=>false and if else logic from controller actions,
i have custom mime type like phtml (plain html).
Mime::Type.register "text/phtml", :phtml
this format need to render the same html views, but only without layout. I complete this with this chunk of code in app. controller:
before_filter proc { |controller|
if params[:format] && params[:format]=='phtml'
controller.action_has_layout = false
controller.request.format = 'html'
end
}
First, this is ugly, second i can't any more control this format from controller in the way:
respond_to :phtml,:only=>:index
because it will always render view with requested format phtml.
is there a better solution? example? how can i alias view formats?
Thank a lot
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以直接在控制器中使用
layout
方法:或者根本不使用布局:
查看 指南了解更多信息。
You can use the
layout
method in your controller directly:Or to use no layout at all:
Check out the guide for more info.
我还没有找到更好的解决方案,只更新了我之前的例子:
我添加了这一行来检查我们的控制器中是否定义了新格式:
现在我们可以拥有完整的新格式,它将呈现我们的标准 html 视图,而不是构建新的视图新格式。
如果我们不想共享现有的 html 代码,但根据请求的格式构建不同的逻辑,这会很有用。
例如,我们可以轻松地准备要打印的 html 内容,例如:
请求将类似于:
我希望有人会发现这很有用。
如果您有更好的方法来做到这一点,请与我们分享。
问候
I haven't found better solution,only update to my previous example:
i added this line to check is a new format defined into our controller:
Now we can have full new format which will render our standard html vews rather the build new views for the new format.
This can be useful if we wont to share existing html code, but build different logic based on requested format.
For example, we can easily prepare our html content for print like:
And request will be like:
I hope that someone will find this useful.
If u have a better approach for doing this, please share with us.
Regards