Мой план состоял в том, чтобы обновить частично через событие клика, где я получаю некоторые данные через ajax. Итак, я открыл свой каталог assets/javascripts и поместил код в файл js модуля, для которого я планировал его вызвать. Мне удалось получить данные и вызвать некоторые «html() или text()» в div. Но как только я попытался позвонить
.html("<%= escape_javascript( render( :partial => 'job') ) %>")
мой контроллер сказал мне неизвестный метод «рендеринга». Поэтому я заметил во многих других угрозах, что каталог ресурсов не был создан для статического контента. Но теперь встает вопрос, куда его девать, как не в активы? Пробовал класть в папку view/model (с тем же названием что и у действия 'show'). Но он не загружался. Да, я сказал Контроллеру в действии show для response_to format.js.
Итак, куда мне поместить js-файл и как его вызвать? Или есть ли способ позволить ему находиться в каталоге ресурсов и иметь возможность вызывать рендеринг?
Спасибо за Ваш ответ! К сожалению, я делаю именно это, но я не работаю. Итак, вот мой код:
/app/views/events/show.js.erb.coffee:
$(document).ready ->
url = window.location
url = String(url).split('/')
event_id = url[$.inArray( "events" , url) + 1]
$('.position').click ->
position_id = $(this).attr("id")
$.ajax '/events/'+event_id+'/eventpositions/'+position_id+'/eventjobs'
dataType: 'json'
success: (result)->
$( '#'+position_id ).find('.jobs').html("<%= escape_javascript( render( :partial => 'job') ) %>")
alert result[1].job_id
/app/views/events/show.html.haml:
%p#notice{:xmlns => "http://www.w3.org/1999/html"}= notice
%p
%b Name:
= @event.name
\
%b Plz:
= @event.plz
%p
%b Personal:
- @eventpositions.each do |p|
.position{:id => "#{p.id}"}
%b
Position: #{Position.find(p.position_id).name} Anzahl: #{p.quantity} Aufträge: #{p.eventjobs.all.count}
.jobs
= link_to 'Neuer Auftrag', new_event_eventposition_eventjob_path(@event.id,p.id)
%br
%br
= link_to 'Neue Position', new_event_eventposition_path(@event.id)
= link_to 'Edit', edit_event_path(@event)
|
\#{link_to 'Back', events_path}
/app/views/events/_job.html.haml:
.jobs
- eventjobs.each do |j|
User: #{User.find(Job.find(j.job_id).user_id).email}
%br
/приложение/контроллеры/events_controller.rb:
def show
@agency = Agency.find(current_agent.agency_id)
@event = @agency.events.find(params[:id])
@eventpositions = @event.eventpositions.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: @event }
format.js
end
end
Таким образом, код работает без Javascript. Все рендерит и ладно. Но моя главная проблема сейчас заключается в том, что он даже не будет реагировать на событие клика, если я помещу его в папку app/views/events. Как только я помещаю его в каталог активов, я работаю как шарм, но не буду отображать. Итак, что мне не хватает? Почему мой код js не загружается?
Спасибо большое за вашу помощь!