2010-03-31 3 views
0

Я пытаюсь захватить текущее значение выпадающего списка с Prototype и передать его вместе с использованием: с, как этотRails: link_to_remote помощник прототип с: с опцией

<%= link_to_remote "today", :update => "choices", 
    :url => { :action => "check_availability" } , 
    :with => "'practitioner='+$F('practitioner')&'clinic='+$F('clinic')&'when=today'", 
    :loading => "spinner.show(); $('submit').disable();", 
    :complete => "spinner.hide(); $('submit').enable();" %> 

Однако, это не работает ожидается. Я не могу параметры доступа в контроллере, как помощник link_to_remote посылает параметры, как это:

Parameters: {"succ"=>"function() {\n return this + 1;\n}", "action"=>"check_availability", "round"=>"function() {\n return __method.apply(null, [this].concat($A(arguments)));\n}", "ceil"=>"function() {\n return __method.apply(null, [this].concat($A(arguments)));\n}", "floor"=>"function() {\n return __method.apply(null, [this].concat($A(arguments)));\n}", "times"=>"function (iterator, context) {\n $R(0, this, true).each(iterator, context);\n return this;\n}", "toPaddedString"=>"function (length, radix) {\n var string = this.toString(radix || 10);\n return \"0\".times(length - string.length) + string;\n}", "toColorPart"=>"function() {\n return this.toPaddedString(2, 16);\n}", "abs"=>"function() {\n return __method.apply(null, [this].concat($A(arguments)));\n}", "controller"=>"main"} 

Где я буду неправильно? Есть лучший способ сделать это?

ответ

0

Спасибо, Salil.

Решение, которое вы предложили, также имеет некоторые проблемы (сброс синтаксической ошибки Javascript). Я предполагаю, что у него такая же проблема с кавычками, что и у меня, что я не могу понять. Но решение чисто решает эту проблему и работает гладко:

:with => "$H({ practitioner: $F('practitioner'), clinic: $F('clinic'), 
     when: 'today' }).toQueryString()" 

Ref: http://www.spacevatican.org/2008/5/17/with-or-without-you-link_to_remote-s-mysterious-parameter

1

Попробуйте

<%= link_to_remote "today", :update => "choices", 
    :url => { :action => "check_availability" } , 
    :with => "'practitioner='+$F('practitioner')+&'clinic='+$F('clinic')+&'when=today'", 
    :loading => "spinner.show(); $('submit').disable();", 
    :complete => "spinner.hide(); $('submit').enable();" %> 

Вот разница

:with => "'practitioner='+$F('practitioner')&'clinic='+$F('clinic')&'when=today'", 

Если изменится

:with => "'practitioner='+$F('practitioner')**+**&'clinic='+$F('clinic')**+**&'when=today'", 

Ref: http://firstruby.wordpress.com/2008/11/03/remote_function-or-link_to_remote-with-multiple-parameters-in-ruby-on-rails/

0

Я предлагаю сделать так:

<%= link_to_remote "today", :update => "choices", 
    :url => { :action => "check_availability" } , 
    :with => "'practitioner='+$('practitioner').value +'&clinic='+$('clinic').value+'&when=today'", 
    :loading => "spinner.show(); $('submit').disable();", 
    :complete => "spinner.hide(); $('submit').enable();" %> 
+0

Спасибо. Но, я чувствую, что выглядит следующим образом: с => «$ H ({практик: $ F (« практик »), клиника: $ F ('clinic'), , когда: 'today'}). ToQueryString() " Просто, чтобы избежать конкатенации строк и работы с кавычками. Это просто добавляет к путанице. –

+0

Да, вы правы, и таким образом вы можете избежать таких ошибок, что это. – dombesz

Смежные вопросы