2016-01-21 5 views
0

У меня есть вид, называемый events\new.html.erb, который содержит коллекцию, которую выбирают другие пользователи. Я хочу сделать так, чтобы каждый раз, когда пользователь выбирает другое имя в коллекции, выбирает <div id="colleaguecal"></div> с выбранным пользователем Calendar, который содержит их личные Events. Тем не менее, я не могу показаться, чтобы получить частичную calendars\_showColleague.html.erb, который держит календарь Я хочу, чтобы сделать, на самом деле появляются, когда коллекция выбора меняется ...AJAX не оказывает частичное

#events\new.html.erb 

<%= f.collection_select :id, 
           Customer.where(business_id: current_customer.business_id), 
           :id, 
           :full_name, 
           { prompt: 'Select' }, 
           { id: "colleageselect", onChange: "renderColCal(this)" } %> 
#application.js 
function renderColCal(select){ 

    var colleagueID = select.value ; //this variable is sent to Ruby for the database query to find the selected user 
    $(document).on("change", "select#id", function(e){ 

      $.get("customers/"+ +$(this).val() + "/calendars/1"); 
     } 
    ); 

} 

..

#routes.rb 
post 'calendars_controller/calendarChange', to: 'calendars_controller#calendarChange' 

Тогда я беру яваскрипт вара colleagueID и использовать его в моем Calendars_controller#calendarChange:

#calendars_controller.rb 
class CalendarsController < ApplicationController 
    respond_to :js, :html 


    def new 
    @calendar = Calendar.new(calendar_params) 

    end 

    def create 
    @calendar = Calendar.new(calendar_params) 
    end 

private 
    def calendar_params 
    params.require(:customer_id) 
    end 


    def show 
    @calendar = current_customer.calendar 
    @events = @calendar.events 
    end 

    def calendarChange 
    colleagueID = params[:colleagueID] #the JS var is taken in here and then used to find the user in the database 
    @colleague = Customer.where(id: :colleagueID) 

    @colcalendar = @colleague.calendar 
    @events = @colleague.calendar.events #the specific events that I want to render to the '_showColleague.html.erb' template 

    end 

end 

Мне нужно сделать частичное calendars\_showColleague.html.erb в пределах events\new.html.erb где _showColleague передан и @colcalendar переменные, созданные в календаре # calendarИзменить. Прежде чем клиент взаимодействует с collection_select, там ничего не должно быть, тогда, как только они выбрали другого клиента, календарь выбранного клиента (_showColleague) должен появиться ниже. Как мне это сделать?

мне сказали, чтобы сделать это вчера, но он ничего не делает:

#app/views/calendars/new.js.erb 
$(".element").html("<%=j render 'calendars/_showColleague' %>"); 

Пожалуйста, помогите! Спасибо

ответ

0

Обратите внимание, что вам не нужно указывать _ (подчеркивание) при частичном рендеринге.

$('.element').html("<%= escape_javascript(render :partial => 'calendars/showColleague') %>"); 
+0

ОК спасибо, это не исправило мою проблему, однако –

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