在Rails 4中向index.json添加新字段

时间:2014-10-23 08:59:32

标签: ruby-on-rails ruby json ruby-on-rails-4

我想在index.json中添加一个修改后的变量。

视图/帖/ index.json.builder

json.array!(@posts) do |post|
  post[:image_th] = post[:image].reverse.split('.', 2).join(".s").reverse
  #this is the new line above

  json.extract! post, :id, :title, :datum, :body, :image
  #json.url post_url(post, format: :json)
end

所以它增加了一个'之前" .jpg"在字符串中。

这会出错:

  

无法写出未知属性`image_th'

如何在不创建迁移并从数据库访问它的情况下向index.json添加字段?

2 个答案:

答案 0 :(得分:0)

如果您不需要保留它,则可以在attr_accessor :image_th模型中使用Post

class Post < ActiveRecord::base
  attr_accessor :image_th
end

无论如何,声称更多的是方法而不是模型中的字段

答案 1 :(得分:0)

尝试:

class Post < ActiveRecord::Base
  # ...

  def image_th
    image.reverse.split('.', 2).join(".s").reverse
  end

end

然后:

json.extract! post, :id, :title, :datum, :body, :image_th

编辑:

此方法可能会稍微清洁一下:

def image_th
  image.sub(/\.[^\.]+$/, 's\0')
end