使用rails和jquery提交表单时重新呈现javascript

时间:2011-06-21 13:01:41

标签: jquery ruby-on-rails

我是一个使用rails和jquery开发的新手,并且一直在寻找一个简单的例子,说明如何做好几天。我有一个页面poweroutput.html.erb,显示特定日期的客户太阳能系统的功率输出。当他们输入不同的日期时,我希望他们看到不同的输出,但无需重新加载页面。在我的页面上,我有一些javascript和一个表单(用于提交用户希望看到电源输出的日期),如下所示:

<head>
<script type="text/javascript">
    // a lot of javascript
</script>
</head>

<% form_tag(poweroutput_path, :method=>'post', :id => "date-form", :remote => true ) do %>
    <%= text_field_tag(
              'dt', nil,
              {  :id => 'date-field',
                 :class => 'dateformat-d-dt-m-dt-Y',
                 :value => Time.now.getlocal.strftime("%d.%m.%Y")            
              })
    %>
    <%= submit_tag "Go" %>
<% end %>

我想要的是在提交表单时重新呈现我页面上的javascript。我的页面控制器操作目前如下:

def poweroutput      
  # some code 

  if request.xhr?
    @date = params[:dt]         # dt is posted when form is submitted
  else 
    @date = Time.now.getlocal.strftime("%d.%m.%Y")
  end

  respond_to do |format|
    format.html 
    format.js 
  end
end

我想要的是我的页面上的javascript在我的表单提交时使用不同的@date重新呈现。有谁知道一个简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

如果是很多javascript,那么:

  1. 将日期放在网页的某个位置(例如隐藏字段)
  2. 修改javascript,使其从那里获取值。
  3. 为JavaScript创建一个单独的.js库,并将其加载到页面中。
  4. 通过这种方式,浏览器将从缓存javascript中获益,减少服务器的负载和页面的下载时间。