2013-12-25 3 views
0

Я хочу передать выбранное значение из выпадающего списка в fullcalendar plugin и рельсы formКак передать идентификатор из JavaScript к рельсам форм

выберите тег

<%= form_tag appointments_path, :html => {:id => "form-1"} do %> 
    <%= select_tag(:worker_id, options_from_collection_for_select(@client.workers, :id, :name), :selected => @a, :style=>"width:170px;", :prompt => "Select Staff Member")%> 
<% end %> 

Я передаю переменную @a по ajax к

<script> 
$('#worker_id').change(function (e) { 
     var a = parseInt($(this).val()); 
     alert(a); 
     $.ajax({ 
      type: "GET",   
      url:"/customers/new", 
      data : { id: a }, 
      success:function(result){ 
       $('#content1').html("<%= escape_javascript(render :partial =>'form', :locals => ????) %>"); 
      } 
     });   
     $('#calendar').fullCalendar('destroy');  
     RenderCalendar($(this).val()); 
    }); 
</script> 

Я не уверен, я ли я делать это в правильном направлении. Я хочу, чтобы передать значение в form которое здесь:

<%= form_for(@customer) do |f| %> 
    <%#= f.error_notification %> 
    <div class="field"> 
    <%#= f.label :Service_Name %> 
    <%#= f.collection_select :service_id, Category.where(:client_id => @client).order(:name), :services, :name, :id, :service_name %> 
    </div> 

<br /> <br /> 
    <%= f.fields_for :appointments do |builder|%> 
    <fieldset> 
    <% if @a!=0 %> 
    <%= builder.hidden_field :worker_id, :value=> @customer.worker_id %> 
    <%= builder.hidden_field :client_id, :value=> @client.id%> 
    <%= builder.label :price %> 
    <%= builder.text_field :price %> 
    <%= builder.label :Service_Name %> 
    <%= builder.collection_select(:service_id, @a.order(:service_name), :id, :service_name, :include_blank => true, :multiple => true) %> 
    <% end %> 
     <%= builder.label :appointment_date %> 
     <%= builder.date_select :appointment_date %> <br /> 
     <%= builder.label :appointment_start_time %> 
     <%= builder.time_select :appointment_start_time, ampm: true %> <br /> 
     <%= builder.label :appointment_end_time %> 
     <%= builder.time_select :appointment_end_time, ampm: true %> 
    </fieldset> 
    <%end%> 
<div class="field"> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :worker_id, :value=>@customer.worker_id %> 
    </div> 

    <div class="form-actions"> 
    <%= f.button :submit, :class=>"btn btn-primary" %> 
    </div> 
<% end %> 

ответ

0

Если я правильно понимаю: вы пытаетесь засавить в fullcalender JQuery плагин с AJAX обратного вызова успеха на основе выбранного из выбранного тега здесь пользователь:

<%= form_tag appointments_path, :html => {:id => "form-1"} do %> 
    <%= select_tag(:worker_id, options_from_collection_for_select(@client.workers, :id, :name), :selected => @a, :style=>"width:170px;", :prompt => "Select Staff Member") %> 
<% end %> 

Существует проблема, связанная с тем, как вы пытаетесь это сделать. Любой встроенный рубин в ваших представлениях будет запускаться только один раз во время выполнения. По сути, ваш escape_javascript (render partial ..... не запускается, потому что в этот момент выполняется какой-либо встроенный рубин.

Что вы можете сделать, так это сохранить вызов ajax, который у вас уже есть, но запустить частичный код рендеринга в вашем «/ клиентов/новый», вместо того, чтобы назвать его в Ajax обратного вызова -Какой после выполнения

render :partial =>'form', :locals => ???? 

Это вернет частичный код, с которым вы хотите затем поместить на странице. с вашей помощью AJAX, просто разместите его на странице примерно так:

success:function(result){ 
    $('#content1').html(result); 
} 
Смежные вопросы