RoR:渲染JSON时模板丢失错误

6

我在控制器中有以下代码:

def tljson (result = [])
  @stat_id = params[:stat_id]
  @rpm = FedoraRpm.find_by_name(@stat_id)
  @rpm.ruby_gem.historical_gems.each { |h|
    result << { :content => h.version, :start => h.build_date }
    }
  @rpm.bugs.each { |b|
    result << { :content => b.name + "<br><a href='"+b.url+"'>View on BugZilla</a>", :start => b.bz_id }
  }
  @res = result.to_json
    respond_to do |format|
    format.json { render @res.to_json }
    end
end

前往/tljson.json可以呈现JSON,但标题显示“模板未找到;缺少模板”。我做错了什么?
1个回答

7

我相信您需要在respond_to块中指定渲染:json

respond_to do |format|
  format.json { render json: @res }
end

否则它将查找一个tljson.json.erb文件。

你不必调用 #to_json - Hauleth
我试过那样做,但返回了这个错误:#tljson 中的语法错误stats_controller.rb:42: 语法错误,不期望的 ': ',期望 '}' - 17andLearning
@AnimeshTripathi,由于您没有告知使用的 Ruby 版本,因此回答者假设您使用了现已稳定并投入生产的 1.9.x 版本。但您必须使用即将被弃用的 1.8 版本。 - Hauleth
如果您使用的是Rails 4.1,则需要添加gem 'responders','> 2.0'。Rails会向您发出警告: ```控制器级别的respond_to功能已提取到responders gem中。将其添加到您的Gemfile中以继续使用此功能:gem 'responders','> 2.0'。有关详细信息,请参阅Rails升级指南。``` - Monarch Wadia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接