Ошибка ActionView :: MissingTemplate при попытке создать новый объект

#ruby-on-rails #json #templates #coffeescript #actionview

#ruby-on-rails #json #шаблоны #coffeescript #actionview

Вопрос:

Я получаю сообщение об ошибке «ActionView :: MissingTemplate (отсутствует шаблон home / suites, application / suites с {:locale=>[:en],:formats=> [:json], : handlers=>[:erb, :builder, :coffee, :haml,:rabl]}.» когда я попытался опубликовать (создать новый) в suites (/suites.json). Фрагменты кодов приведены ниже.

Может кто-нибудь посоветовать мне, как я могу это решить? Спасибо!

SuitesController.rb

 def create

  @suite = Suite.new
  @suite.text = params[:suite][:text]
  @suite.description = params[:suite][:description]
  @suite.remote_image_url = params[:suite][:image_url]

  if @suite.save
    render json: Suite.standard_to_json(@suite)
  else
    render json: @suite.errors, status: :unprocessable_entity
  end
end
  

Suites.rb

 class Suite
  include Mongoid::Document
  include Mongoid::Timestamps

  field :text, type: String
  field :description, type: String
  field :image_url, type: String

  mount_uploader :image, ImageUploader

  validates_presence_of :text
  validates_presence_of :image

  def self.standard_to_json(suites)
    suites.to_json
  end

end
  

введите описание изображения здесь

Suites.js.coffee

 class Entities.Suite extends Backbone.Model
  urlRoot: "/suites"


class Entities.SuitesCollection extends Backbone.Collection
  model: Entities.Suite
  url: "/suites"

API =
  getSuites: (cb) ->
    suites = new Entities.SuitesCollection
    suites.fetch
      success: ->
        cb suites
      error: ->
        cb suites

  newSuite: (suite, cb) ->
    $.post "/suites.json",
      suite: suite
    .success (suite) ->
      cb (suite)

App.reqres.setHandler "suites:get", (cb) ->
  API.getSuites(cb)

App.reqres.setHandler "suite:add", (suite , cb) ->
  API.newSuite(suite, cb)
  

Ответ №1:

По завершении вашего create метода вам необходимо иметь a redirect_to , который отправляет пользователя на другую страницу (например, an edit.html.erb ). Если вы этого не сделаете, контроллер отправит данные, а затем попытается отобразить create.html.erb страницу, которую он не может найти.

Комментарии:

1. Но у меня есть suites.haml.html создан. Разве этого недостаточно?