У меня есть вид, называемый 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' %>");
Пожалуйста, помогите! Спасибо
ОК спасибо, это не исправило мою проблему, однако –