Apotomo: Как вы отображаете состояние / представление в формате HTML из другого представления в другом формате?
По причинам, выходящим за рамки этой проблемы, мне нужно ответить JSON при создании изображения:
<%=
raw({
...
:url => @image.url(:width => @width, :height => @height),
:edit_link => render({:state => :image_edit_table_cell, :template_format => :html}, @image),
# btw, I've also tried passing :format => :html
:delete_link => link_to_destroy_image(@image, :remote => true, :path => url_for_event(:destroy, :image_id => @image)),
...
}.to_json)
%>
Тем не менее, в этот JSON я хочу включить довольно симпатичный HTML. Чтобы включить это, я отображаю состояние / представление (как вы можете видеть в :edit_link
часть). Это image_edit_table_cell.html.haml
вид на виджет:
= link_to_edit_image @image, :remote => true
# ... doesn't really matter - as long as you know this is html.haml
Тем не менее, когда я создаю изображение, и JSON отображается, я получаю Missing template
ошибка:
ActionView::Template::Error (Missing template cell/rails/image_edit_table_cell with {:handlers=>[:builder, :rjs, :rhtml, :erb, :haml, :rxml], :locale=>[:en, :en], :formats=>[:json]} in view paths "/home/ramon/source/unstilted/app/widgets", "/home/ramon/source/unstilted/app/widgets/layouts" and possible paths image/table/image_edit_table_cellapplication/image_edit_table_cellapotomo/widget/image_edit_table_cellcell/rails/image_edit_table_cell):
6: :caption => @image.caption || "",
7: :text_tag => @image.text_tag(:width => @width, :height => @height),
8: :url => @image.url(:width => @width, :height => @height),
9: :edit_link => render({:state => :image_edit_table_cell, :template_format => :html}, @image),
10: :delete_link => link_to_destroy_image(@image, :remote => true, :path => url_for_event(:destroy, :image_id => @image)),
11: :success => true
12: }.to_json)
app/widgets/image/table_widget.rb:37:in `image_edit_table_cell'
app/widgets/image/table/new_image.json.erb:9:in `_app_widgets_image_table_new_image_json_erb___457172591_99648970_0'
app/widgets/image/table_widget.rb:16:in `add_image'
app/widgets/image/uploader_widget.rb:22:in `upload'
Кажется, проблема в том, что, поскольку я рендерил его из файла JSON, он не знает, искать ли файл HTML (поэтому формат, который он ищет, это json
, Вот почему вы видите :template_file => :html
вариант (я получил это отсюда) в первом блоке кода выше.
Я использую эти драгоценные камни:
- 'рельсы', '3.0.10'
- 'клетки', '3.6.2'
- "apotomo", "1.1.2"
1 ответ
По-видимому, это проблема Rails, а не проблема Apotomo. Этот ответ сделал это для меня! Ключ - это установка формата в вашем файле представления перед тем, как вы создадите HTML-представление:
<% self.formats = ["html"] %>