首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails + jQuery-tokeninput + Draper装饰器方法

Rails + jQuery-tokeninput + Draper装饰器方法
EN

Stack Overflow用户
提问于 2012-05-21 10:23:41
回答 1查看 438关注 0票数 0

我使用Rails + jQuery-tokeninput来执行typeahead搜索并填充"belongs_to“关系。以下是模型:

代码语言:javascript
复制
class Performance < ActiveRecord::Base
  attr_accessible  :composition_tokens
  belongs_to :composition
    ...
  attr_reader :composition_tokens

  def composition_tokens=(ids) # comma-separated
      self.composition_tokens = ids.split(',')
  end
end

我们在这个项目中使用Draper为我们的模型提供装饰器。

我们的CompositionDecorator有以下方法:

代码语言:javascript
复制
class CompositionDecorator < ApplicationDecorator
  decorates :composition

  def full_title
    model.title + ' by ' + model.composer.canonical_name
  end

我已经设置了tokeninput支持来使用装饰器,如下所示:

代码语言:javascript
复制
jQuery ->
  $('#performance_composition_tokens').tokenInput '/admin/compositions.json'
     theme: 'facebook'
     prePopulate:$('#performance_composition_tokens').data('load')
     propertyToSearch: 'full_title'

控制器索引方法像这样调用装饰器:

代码语言:javascript
复制
class Admin::CompositionsController < Admin::BaseController
def index
    @compositions = Composition.includes(:composer).paginate(:page => params[:page]||1)
    respond_to do |format|
      format.html
      format.json { render :json => 
        CompositionDecorator.decorate(@compositions.where("title like ?",
            "%#{params[:q]}%")) }
    end
end

当我不使用装饰器时,这一切似乎都工作得很好,但添加装饰器会导致问题。"full_title“属性没有包含在控制器生成的json中,因此"undefined”显示在所选值中,并且搜索结果列表中不显示任何内容。javascript控制台中还显示以下错误:

TypeError:“undefined”不是对象(对“value.replace”求值)

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2012-05-21 10:37:35

问题是to_json不知道对象上的方法,所以您必须通过:methods参数显式地告诉它。我以前没有使用过Draper,但是看起来你可以在你的CompositionDecorator中添加你自己的自定义to_json。所以,像这样的东西可能会起作用:

代码语言:javascript
复制
class CompositionDecorator

  def to_json
    composition.to_json(:methods => [:full_title])
  end

end

另请参阅:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10678874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档