日期选择中的ajax问题

时间:2010-12-27 13:20:08

标签: ruby-on-rails ruby ajax

对不起,我是Rails的新手程序员。

我想在DATE SELECT中使用AJAX。当我更改日期时,更改惩罚性ammount取决于方法get_punitive(Model)的结果。

我使用Controller,Model和View中的下一个代码。但是无法识别事件On change。拜托,你可以帮助我。

运营模式(部分)

def get_punitive(payment_date, expiration_date)
    if payment_date > expiration_date
    expiration_days= (payment_date - expiration_date).to_i
    else
    expiration_days = 0
    end
    punitive_ammount = (self.capital * (self.interest_rate_for_taker / 100.0) * expiration_days) / 30
   # raise punitive_ammount.inspect
  end

操作控制器(部分)

def cancel
    @operation        = Operation.find(params[:id])
    last_pagare       = Pagare.find(:first, :conditions => "operation_id = #{@operation.id} AND state <> 'cancelled'")
    @punitive_ammount = @operation.get_punitive(DateTime.now.to_date, last_pagare.expiration_date.to_date)
  end

  def update_payment_date
    raise params.inspect
  end

  def submit_cancellation
    @operation       = Operation.find(params[:id])
    ammount          = params[:ammount]
    punitive_ammount = (params[:punitive_ammount].blank?) ? 0 : params[:punitive_ammount]
    payment_date     = Date.new(params[:"payment_date(1i)"], params(:"payment_date(2i)"), params(:"payment_date(3i)"))
    admin            = User.find_by_login('admin')
    if @operation.cancel(ammount, punitive_ammount, admin, payment_date)
      respond_to do |format|
        format.html { redirect_to(admin_operations_url) }
        format.xml { head :ok }
      end
    else
      @operation.errors.add_to_base("Los montos ingresados son invalidos")
      render :action => 'cancel'
    end

取消视图

Cancelacion de Operaciones

<% form_for(@operation, :url => submit_cancellation_admin_operation_path) do |f| %>
  <%= f.error_messages %>

  <%= text_field_tag :a, :onClick => "javascript:alert('hola');" %>

  <p>Fecha de Pago:<br/><br/>
    <%= date_select("", :payment_date,  {:start_date => Time.now, :onchange => remote_function(:url => {:controller => 'operations', :action => "update_payment_date"}, :with => "'payment_date='+value")}) %>
  </p>

    <p>Prueba
      <%= collection_select "", :object, Operation.all, :id, :taker_id, { :onChange => "javascript::alert('hola');", :onClick => remote_function(:url => {:controller => 'operations', :action => "update_payment_date"}, :with => "'dgdfg='+value")} %>
    </p>
  <p>Monto a Cancelar (Mayor a cero):<br/><br/>
     <%= text_field_tag :ammount , @operation.get_balance(@operation.interest_rate_for_taker) %>
  </p>

  <p>Monto punitorio:<br/><br/>
     <%= text_field_tag :punitive_ammount, @punitive_ammount %>
  </p>

  <!--<p>Fecha de Pago:<br/><br/>
    <%#= date_select("", :date, :start_year => Time.now.year-1, :default => Time.now) %>
  </p>-->
  <%  %>
  <p>
    <%= f.submit 'Cancelar' %>
  </p>

<%  end  %>

1 个答案:

答案 0 :(得分:1)

你好date_select助手的格式是

date_select(object_name, method, options = {}, html_options = {}) 

你有

<%= date_select("", :payment_date,  {:start_date => Time.now, :onchange => remote_function(:url => {:controller => 'operations', :action => "update_payment_date"}, :with => "'payment_date='+value")}) %>

<%= date_select("", :payment_date,  {:start_date => Time.now}, {:onchange =>"javascript::alert('hola');"}) %> 

collection_select

相同
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) 

你有

<%= collection_select "", :object, Operation.all, :id, :taker_id, { :onChange => "javascript::alert('hola');", :onClick => remote_function(:url => {:controller => 'operations', :action => "update_payment_date"}, :with => "'dgdfg='+value")} %>

尝试

<%= collection_select "", :object, Operation.all, :id, :taker_id, {}, { :onChange => "javascript::alert('hola');"}%>