我的計劃是通過一個klick-event來更新部分,我通過ajax獲取一些數據。 所以我打開我的assets/javascripts目錄,並將代碼放在我計劃打開的模塊的js文件中。我設法獲取數據並在div上調用一些「html()或text()」。但只要我試圖呼叫Js在Rails中渲染一個部分的正確位置
.html("<%= escape_javascript(render(:partial => 'job')) %>")
我的控制器告訴我未知的方法「渲染」。所以我在許多其他威脅中發現,資產目錄不是爲靜態內容構建的。 但現在問題出在哪裏,如果不是在資產? 我試圖把它放在view/model文件夾中(與'show'的名字相同)。但它不會加載。是的,我告訴控制器在show action中對respond_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
/app/controllers/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文件夾中,它甚至不會對click事件做出反應。只要我把它放在資產目錄中,我就像魅力一樣工作,但不會渲染。 那麼我錯過了什麼?爲什麼我的js代碼沒有被加載?
非常感謝您的幫助!
非常感謝您的答案!可悲的是我做到了這一點,它不工作,很可能我錯過了一些東西。 – Jan
仍然不適合我。即使我將其更改爲計劃.js文件(或js.erb),它也不會加載或對其執行任何操作。即使當我嘗試執行如下的命令時:$('。position')。點擊(功能(){ \t return alert('Testing'); });什麼能告訴RoR不加載它? – Jan
有更好的看看你的代碼,你在哪裏試圖加載這個js文件?你提到了一個點擊事件,你能發佈包含這個點擊事件的代碼嗎?謝謝。 – agmcleod