我尝试从JsON调用中访问模型中的虚拟属性,但没有成功.假设我有以下型号和控制器代码
class Product name,description,price,attr_accessor :discounted_price endclass Price discountendclass ProductsController def show @product = Product.find(params[:ID]) respond_to do |format| format.HTML # show.HTML.erb format.Json { render :Json => @product } end endend
我喜欢的是让JsON输出还包括Product.discounted_price,它是为每次调用实时计算的,即discounted_price = Price.discount * Product.price.有没有办法实现这个目标?
解:
在dmarkow的初步帮助下,我发现了,我的实际情况比上面的例子更复杂.我可以做这样的事情,在Product模型中添加一个getter方法
def discounted_price ...# do the calculation hereend
在JsON调用中执行此 *** 作
store = Store.find(1)store.as_Json(:include => :products,:methods => :discounted_price)解决方法 您可以使用:methods参数运行to_Json以包含这些方法的结果.
render :Json => @product.to_Json(:methods => :discounted_price)总结
以上是内存溢出为你收集整理的ruby-on-rails – 从JSON访问虚拟属性全部内容,希望文章能够帮你解决ruby-on-rails – 从JSON访问虚拟属性所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)