2010-12-27 20 views
0

私はRailsの初心者プログラマーです。日付のAjaxに関する問題

DATE SELECTにAJAXを使用します。私が日付を変更すると、罰金額を変更するにはget_punitive(Model)メソッドの結果に依存します。

コントローラ、モデル、ビューで次のコードを使用します。ただし、変更時のイベントは認識されません。私を助けてください。

オペレーションモデル(部分的に)

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デ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 F date_selectヘルパーは、あなたが

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

collection_select

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

あなたが

を持っている同じ

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

を試してみる

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

ですdate_selectとcollection_selectがイベントを認識しyou.Now

<%= 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');"}%> 
+0

感謝をしてみてください。 – maxiperez

関連する問題