2014-10-27 109 views
0

呈現集合中的部分我有下面的代碼,我想通過javascript來呈現這(通過AJAX雷分頁):軌道4通過escape_javascript

<div id="paginator-jobs-top" class="text-center"> 
    <%= paginate @jobs, remote: true, 
         theme: 'twitter-bootstrap-3', 
        param_name: 'jobs', 
         params: { tab: 'jobs' }, 
      pagination_class: 'pagination-small pagination-centered' %> 
</div> 
<div id="jobs"> 
    <%= render partial: 'jobs/job_panel', collection: @jobs, as: :job %> 
</div> 
<div id="paginator-jobs-bottom" class="text-center"> 
    <%= paginate @jobs, remote: true, 
         theme: 'twitter-bootstrap-3', 
        param_name: 'jobs', 
         params: { tab: 'jobs' }, 
      pagination_class: 'pagination-small pagination-centered' %> 
</div> 

而我這個js.erb代碼嘗試,但它根本不工作:

$('#paginator-jobs-top').html('<%= escape_javascript(paginate(@jobs, 
                  remote: true, 
                  theme: "twitter-bootstrap-3",    
                  param_name: "jobs", 
                   params: { tab: "jobs" }, 
       pagination_class: "pagination-small pagination-centered").to_s) %>'); 

$('#jobs').html('<%= escape_javascript(render partial: "jobs/job_panel", 
              collection: @jobs, 
                as: :job) %>'); 

我試過其他的變化,但沒有一個工作。如果有人知道如何在js.erb方法中渲染上面的代碼,我很樂意聽到!

我從上面得到的錯誤是:

ArgumentError - wrong number of arguments (0 for 1) 

當我嘗試它在js.erb片段稍微不同的線(沒有「作業:J」)我得到:

NameError - undefined local variable or method `job' for #<#<Class:0x 

****根據對Blelump的建議,下面我改變了我的代碼,這***

<div id="jobs"> 
    <%= render partial: "jobs/job_panel", collection: @jobs, as: :job %> 
</div> 

未經AJAX的偉大工程(這是實際上是在Rails中渲染集合偏好的正確方法,之前我的錯誤)。然而,當我調整js.erb文件到這一點,我仍然得到一個錯誤:

$('#jobs').html('<%= escape_javascript(render partial: "jobs/job_panel", 
              collection: @jobs, 
                as: :job) %>'); 

的錯誤是從雷再次:

NoMethodError - undefined method `current_page' for nil:NilClass: 
    kaminari (0.16.1) lib/kaminari/helpers/action_view_extension.rb:18:in `paginate' 
+0

你有什麼錯誤嗎? – 2014-10-27 16:04:26

+0

一個錯誤我得到的是: NameError - 未定義的局部變量或方法'爲#作業」 <#<類別:0x0000010a2d4208>:0x00000108af5330> 一個不同的錯誤與另一種嘗試: 引發ArgumentError - 錯誤的參數數目(0 1) – 2014-10-27 16:07:07

回答

1

嘗試:

$('#jobs').html('<%=raw @jobs.collect {|j| escape_javascript(render :partial => "jobs/job_panel", :locals => {:job => j}) }.join("") %>'); 

或簡單,渲染集合

$('#jobs').html('<%=raw escape_javascript(render :partial => "jobs/job_panel", :collection => @jobs, :as => :job) %>'); 
+0

更好,但仍然不能工作,我編輯了我的原始問題以合併您的信息。 – 2014-10-27 16:27:34

+0

它看起來像來自'<%= paginate @elements%>'這裏所述:https://github.com/amatsuda/kaminari/blob/master/lib/kaminari/helpers/action_view_extension.rb。你提供了corrent變量名嗎? – blelump 2014-10-27 16:41:42

+0

是的,我的意思是,當我關閉'remote:true'選項並運行它時,分頁工作正常,無論是使用我原來的循環方式還是建議渲染部分集合。一切都好。但是,只要我打開'remote:true'並將該片段轉換爲show.js.erb,它就開始動作了。我將添加更多的代碼...也許是我正在做的其他事情。 – 2014-10-27 16:43:44