Ответ - по крайней мере, на мой вопрос - довольно запутанный, и требует много копаться во внутренностях стека Rails! Я просто копирую здесь: посмотрите полный ответ в книге Хосе Валима, Crafting Rails Applications !
В Rails 3.2.1 (возможно, даже раньше) шаблоны (как, например, в app / views / posts / show.haml) «найдены» чем-то, называемым Resolver, и можно добавить собственные Resolver, которые Я сделал :) 1005 *
Я добавил
class ViewTemplate < ActiveRecord::Base
class Resolver < ActionView::Resolver
def find_templates(name, prefix, partial, details)
conditions = {
:path => normalize_path(name, prefix),
:locale => normalize_array(details[:locale]).first,
:display_format => normalize_array(details[:formats]).first,
:handler => normalize_array(details[:handlers]),
:partial => partial || false
}
ViewTemplate.where(conditions).map do |record|
initialize_template(record)
end
end
end
end
и затем я сказал своему ApplicationController сначала посмотреть на мой собственный путь:
class ApplicationController < ActionController::Base
append_view_path ViewTemplate::Resolver.new
end
и, наконец, я добавил запись в свой ViewTemplate с
ViewTemplate.create( content: '=render "form"', path: 'posts/edit', display_format: 'html', handler: 'haml' )
и заменил содержимое моих view / layouts / application.haml на:
= render 'posts/edit'
и хуза :)
(ну, более или менее - есть проблемы с причинами, такие как переменные и области видимости - но, эй, нет ничего идеального)