ruby-on-rails-4 – 使用Active Model Serializers,如何渲染部分
发布时间:2020-12-16 21:02:25 所属栏目:百科 来源:网络整理
导读:我正在创建一个新闻源并使用Active Model Serializers gem设置 JSON响应.我想渲染一个常规的ERB部分并将其作为JSON中的一个属性. 控制器/ posts_controller.rb: def index @posts = Post.all respond_to do |format| format.json { render json: @posts.to_
我正在创建一个新闻源并使用Active Model Serializers gem设置
JSON响应.我想渲染一个常规的ERB部分并将其作为JSON中的一个属性.
控制器/ posts_controller.rb: def index @posts = Post.all respond_to do |format| format.json { render json: @posts.to_a,each_serializer: PostSerializer } end end 串行器/ post_serializer.rb: def event_html ApplicationController.new.render_to_string(:partial => 'events/event',:locals => { :event => object.event }) if object.event end 不幸的是,我的视图有一些使用帮助器和请求对象(url)的代码,当我尝试这样做时,我遇到了错误. 事件/ _event.html.erb: <div class="event"> <h4 class="title"><%= link_to event.name,event %></h4> <div class="date"><%= date_range event.start_at,event.end_at %></div> <div class="description"><%= event.description.html_safe %></div> </div> nil的未定义方法`host’:NilClass 有什么好办法可以解决这个问题吗? 解决方法
这是因为您的控制器缺少响应属性.
您可以按如下方式设置控制器请求: def event_html ApplicationController.new.tap {|c| c.request = ActionController::TestRequest.new(host: "localhost") }.render_to_string(:partial => 'events/event',:locals => { :event => object.event }) if object.event end 但是,对于您的情况,我会将现有控制器作为上下文传递给序列化程序 控制器/ posts_controller.rb: def index @posts = Post.all respond_to do |format| format.json { render json: @posts.to_a,each_serializer: PostSerializer,context: self } end end # ... or ... def default_serializer_options { context: self } end 串行器/ post_serializer.rb: def event_html context.render_to_string(:partial => 'events/event',:locals => { :event => object.event }) if object.event end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Flex Viewer 开发教程(1)Flex Viewer配置文件
- ruby-on-rails – Ruby数组到索引哈希?
- vue展示dicom文件医疗系统的实现代码
- vb.net线程详细讲解
- ruby – 在Rails 4中的ActiveRecord中加载database.yml的位
- XML Parser Error on line 1: 不允许有匹配 "[xX][mM][
- SIteMesh介绍
- ruby-on-rails – 将多步骤表单向导的第一步渲染为另一个控
- cocos2d-iphone – cocos2d v2.0升级和RootViewController
- Flex 与 java交互的方法