JSON渲染缺少模板导轨问题?

时间:2018-08-31 02:50:50

标签: ruby-on-rails ruby

以前有人遇到过此错误吗?我已经上网了,找不到太多信息,也许我没有正确呈现JSON?

  

缺少模板答案/结果,带有{:locale => [:en] 、: formats => [:html] 、: variants => [] 、: handlers => [:raw,:erb, :html,:builder,:ruby,:coffee,:jbuilder]}。在以下位置搜索:*“ / Users / Minhaj / Desktop / my_survey / my_survey / app / views” *“ /Users/Minhaj/.rvm/gems/ruby-2.4.1/gems/devise-4.5.0/app/views”

这是代码。如果有错误,将帮助您修复错误。

  def create
    @answer = current_survey.answers.create(question_id: question, choice_id: choice)
    redirect_to question_survey_path(current_survey)
  end

  def results
    @choices = choices_hash
    @results = questions.map do |question|
      {
        question.question => CountChoicesService.call(question.id)
      }
    end
    respond_to do |format|

      format.html { render :nothing => true, :status => 204 }
      format.json { render json: @results }

    end
  end

  private

  def question
    @question ||= params[:question]
  end

  def choice
    @choice ||= params[:choice]
  end

  def choices
    @choices ||= Array.wrap(Choice.all)
  end

  def choices_hash
    choices_hash = {}
    choices.each { |choice| choices_hash[choice.id] = choice.choice }
    choices_hash
  end

  def questions
    @questions ||= Array.wrap(Question.all)
  end
end

我非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这是它的外观,控制器名称为复数

在您的控制器目录下,您应该有这个

# app/controller/answers_controller.rb
class AnswersController < ApplicationController
  def results
  end
end

现在在views目录中,view名称空间应该与控制器名称相同。

# app/views/answers/results.html.erb
<h1>Check if this works</h1>

routes.rb

resources :answers do
  collection/member do
    get :results
  end
end

答案 1 :(得分:-1)

您的问题是您没有回来。除非您返回,否则Rails会呈现该操作的关联模板。尝试将.no-scroll .scroll-content{ overflow: hidden; } 呼叫包装在render中。

旁注,为什么要使用Array.wrap()? ActiveRecord的return()方法类似于数组。它们等待执行查询,直到您实际尝试对其进行迭代为止,然后它们就像一个数组一样工作。您不需要将它们设置为数组。如果发现有问题,可以致电all

不过,关于活动记录记录集合要注意的一件事,如果从其“数组”中删除任何内容,它将实际上从数据库中删除,这可能是您想要的,也可能不是。