#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 создан. Разве этого недостаточно?