Как использовать «observe_field» в диалоговом окне модели jQuery на rails 2.3.8?

#ruby-on-rails #events

#ruby-on-rails #Мероприятия

Вопрос:

Я разрабатываю проект на rails 2.3.8, и мне нужно использовать observe_field в диалоговом окне модели, но у меня это не сработало. Можно ли использовать «observe_field» в диалоговом окне модели? Пожалуйста, кто-нибудь может объяснить мне, как использовать это в диалоговом окне модели? Вот как я использую файл наблюдения

 <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %>
<%= link_to_remote 'Show calendar', :url => {:controller => 'calendar', :action => 'dynamicTrainer'} %>

<%= observe_field 'event',
:url => {:controller => 'calendar', :action=> 'dynamicTr'},
:with => "'mypara='   escape(value)" %> 
  

Это метод dynamicTr в контроллере календаря.

 def dynamicTr
 if (defined? (params[:trainer_id]))
     session[:my123] = 'defined'
 else
     session[:my123] = 'not'
 end
end



 def dynamicTrainer




session[:mySerach]=params[:mypara]
@month = (params[:month] || (Time.zone || Time).now.month).to_i
@year = (params[:year] || (Time.zone || Time).now.year).to_i
@shown_month = Date.civil(@year, @month)
@trainers=Trainer.all 
@first_day_of_week = 1

    if session[:mySerach].nil?
        if (defined? (params[:mypara]))
            session[:mySerach]=(params[:mypara])

            #@@id=(params[:event][:trainer_id])
            @event_strips = Event.event_strips_for_month(@shown_month, @first_day_of_week, :conditions=>["trainer_id = ?",session[:mySerach]])          
        else
            @event_strips = Event.event_strips_for_month(@shown_month, @first_day_of_week)              
        end
    else
        @event_strips = Event.event_strips_for_month(@shown_month, @first_day_of_week, :conditions=>["trainer_id = ?",session[:mySerach]])          
    end     
end
  

И это мой файл dynamicTrainer.js.rjs

 page.replace_html 'show_cal', :partial => 'dynamicTr'

page<< "$j ('#show_cal_dialog').dialog({
    title: 'calendar',
    modal: true,
    width: 500,
   height: 500,
    close: function(event, ui) { $j ('#show_cal_dialog').dialog('destroy') }

});"
  

Это частичный код dynamicTr

 <%= stylesheet_link_tag "event_calendar" %>
<%= event_calendar%>
<%= session[:my123]%>
  

проблема в том, что он показывает календарь, но не печатает значения сеанса. Я не могу использовать observe_field в диалоговом окне модели? Пожалуйста, кто-нибудь может объяснить мне проблему здесь.

Ответ №1:

Я думаю, что в вашем поле наблюдения есть проблема.

используйте идентификатор поля collection_select в поле наблюдения как «event_trainer_id»

 <%= observe_field 'event_trainer_id,
:url => {:controller => 'calendar', :action=> 'dynamicTr'},
:with => "'mypara='   escape(value)" %>