загрузить файл rjs, нажав отправить тег в Rails?

#jquery #ruby-on-rails #ajax

#jquery #ruby-on-rails #ajax

Вопрос:

Я хочу загрузить модальное диалоговое окно, нажав отправить тег. но когда я нажимаю на кнопку, он напрямую переходит на страницу, не переходя к файлу rjs, и не отображается частично. ниже приведен мой код.

 <span style="text-align: right">
<% form_tag "/calendar/dia_cal_view" do %>
<%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %>
<%= submit_tag "search" %>
<%end%>
</span>
  

код контроллера:

 def dia_cal_view

@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[:dia_Serach].nil?
    if (defined? (params[:event][:trainer_id]))
        session[:dia_Serach]=(params[:event][:trainer_id])
        #@@id=(params[:event][:trainer_id])
        @event_strips = Event.event_strips_for_month(@shown_month, @first_day_of_week, :conditions=>["trainer_id = ?",session[:dia_Serach]])            
    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[:dia_Serach]])            
end 
 end
  

dia_cal_view.js.rjs

 page.replace_html 'search_result', :partial => 'cal_view'

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

});"
  

_cal_view.html.erb

 <%= stylesheet_link_tag "event_calendar" %>
<%= event_calendar %>
  

Проблема в том, что файл rjs не работал. Он не попал в файл rjs. что я должен для этого сделать? пожалуйста, помогите мне..

Ответ №1:

прежде всего, ваша форма отправляется как html, а не как запрос rjs. Сначала вам нужно изменить это на запрос rjs, измените эту строку

 <% form_tag "/calendar/dia_cal_view" do %>
  

использовать

remote_form_tag

или вариант

удаленный = true

в зависимости от вашей версии rails

Тогда это должно сработать

Комментарии:

1. Я использую rails 2.3.8 и добавляю remote_form_tag. но тогда он покажет внутреннюю ошибку сервера 500.