сделать: обновить сделать | страница |пытается сделать шаблон "обновление" - PullRequest
0 голосов
/ 17 августа 2011

что я пытаюсь сделать, это изменить список доступных для выбранных населенных пунктов, основываясь на опции, выбранной в select locality_type. Обе выборки отображаются на объекте / _form.html.erb. У меня есть следующий код в LocalitiesController

def index
@localities = Locality.all(:conditions => {:locality_type => params[:locality_type]},
                           :order => 'name')
loc_select_id = params[:element_id]
render (:update) do |page|
  localities_options = options_from_collection_for_select(@localities, 'id', 'name')
  page.replace_html loc_select_id, localities_options
end
end

Этот метод вызывается из address.js так:

var locTypeElem = $('select#locality_type');
var locElem = $("select[name$='[locality_id]']");
var locQuery = '/localities?locality_type=' + locTypeElem.val()
   + '&element_id=' + locElem.attr('id')
$.get(locQuery, null, null, 'script');

Я делал это раньше, но на этот раз что-то пошло не так, я получил следующее сообщение об ошибке в моем журнале разработки:

ActionView::MissingTemplate (Missing template localities/update, application/update    with {:formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:ru, :ru], :handlers=>[:builder, :erb]}. Searched in:
 * "D:/Work/Reserv.by/app/views"
 * "D:/Dev_apps/Ruby187/lib/ruby/gems/1.8/gems/kaminari-0.12.4/app/views"
 * "D:/Dev_apps/Ruby187/lib/ruby/gems/1.8/gems/devise-1.4.2/app/views"
 ):
 app/controllers/localities_controller.rb:7:in `index'

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Prototype и RJS были удалены из Rails 3.1 в отдельный гем prototype-rails.Убедитесь, что вы включили его в свой Gemfile.

0 голосов
/ 19 августа 2011

Ну, так как Prototype устарел, я попробовал другое решение: LocalitiesController теперь возвращает данные, а не скрипт:

def index
@localities = Locality.all(:conditions => {:locality_type => params[:locality_type]},
                           :order => 'name')
render :inline => "<%= options_from_collection_for_select(@localities, 'id', 'name') %>"
end

Эти данные затем обрабатываются AJAX:

function selectLocalitiesByLocalityType()
{
var locTypeElem = $('select#locality_type');
var locElem = $("select[name$='[locality_id]']");
var locQuery = '/localities?locality_type=' + locTypeElem.val()
$.ajax({
    url: locQuery,
    method: 'GET',
    dataType: 'html',
    success: function(data) {
        locElem.empty();
        locElem.append(data);},
    error: function(data) {alert(data);}
        });
return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...