通过单击Rails中的提交标记来加载rjs文件?

时间:2011-10-10 05:45:31

标签: 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 个答案:

答案 0 :(得分:1)

首先,您的表单是作为html提交的,而不是作为rjs请求提交的。 您首先需要将其更改为rjs请求,更改此行

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

使用

  

remote_form_tag

或选项

  

remote = true

取决于您的导轨版本

它应该工作