2015-10-10 2 views
1

У меня есть простой Rails модель, которая состоит из всего лишь одно поля под названием «кэш»:Рендер кэшированной страницы в Rails

class CreateCache < ActiveRecord::Migration 
    def change 
    create_table :caches do |t| 
     t.belongs_to :statistic 
     t.string :cache 
     t.timestamps null: false 
    end 
    end 
end 

сама модель:

class Cache < ActiveRecord::Base 
    belongs_to :statistic 
end 

Поле «кэш» состоит из HTML-документ, и мне нужно найти способ визуализации его в отдельном окне (без какого-либо макета из Rails), когда пользователь нажимает на ссылку в представлении.

Есть ли способ сделать это?

+0

Ну, для отключения раскладку вы можете использовать 'рендеринга макета: false' в своем действии контроллера. Так как вы хотите отобразить контент, который вы, возможно, захотите посмотреть в 'render body:" raw_data ", хотя. См. Http://guides.rubyonrails.org/layouts_and_rendering.html для получения дополнительной информации –

+0

Но если то, что вы делаете, это кеширование визуализированного представления какого-либо ресурса, есть лучшие способы, поскольку сохранение/извлечение HTML-документа в/из базы данных довольно медленный. Также нет необходимости изобретать велосипед http://guides.rubyonrails.org/caching_with_rails.html – max

ответ

0

Внутри вашего CacheController вы можете сделать что-то вроде этого:

def show 
    @cache_object = Cache.find(params[:id]) 

    render html: @cache_object.cache.html_safe, layout: false 
end 

Подробнее: http://guides.rubyonrails.org/layouts_and_rendering.html

+0

Спасибо, работает как шарм :) –

+0

@DayvanCowboy приветствует :) Можете ли вы принять, что это правильный ответ, будет полезен другие люди также. – harshs08

+0

как я могу это сделать? –

Смежные вопросы