2017-03-06 92 views
0

我是新的rails。我已經閱讀了幾乎所有過去開放的帖子,並且我嘗試了很多這裏提到的東西,但它仍然不起作用。我的rails版本是4.2。我收到此錯誤:用jquery渲染一個部分點擊導軌

undefined method `render' for #<#Class:.......

這是我的鏈接我想點擊渲染我的部分:

<tbody> 
    <%- @batches.each do |batch| -%> 
     <tr> 
     <td id="report-show-link"><%= link_to '#', :remote => true do %> 
      Batch <%= batch.id %> 
     <% end %></td> 

一個我讀了保持xxx.js.erbxxx.controller.rb_xxx.html.erb文件名的事同樣的,我做到了。 但是,我不確定,在哪裏保留我的xxx.js.erb文件。如果我把它放到同樣的視圖文件中,我就有了我的偏好,rails將不會識別它。截至目前,我的xxx.js.erb文件在assets/javascripts之下。

我有兩個方法(指數和創建)我xxx.controller.rb

我把

respond_to do |format| 
    format.js {render layout: false} 
end 

在我的創造方法的頂部。

,這是我的jQuery電話:

$("#report-hide").prepend("<%= escape_javascript(render :partial => 'batches')%>") 

再一次;我的文件具有相同的名稱:_batches.html.erb,batches.js.erb和bathces.rb和我在我的控制器上添加了respond_to:js。謝謝!

回答

0

.js.erb文件是一個渲染模板。它與主要的.html.erb文件位於相同的文件夾中。嘗試使用respond_with而不是respond_to並查看是否可以幫助您完成渲染。

你得到「undefined method'render'」錯誤的可能原因正是因爲你的.js.erb文件位於錯誤的位置。應用程序/資產下的JS代碼編譯爲靜態,在這種情況下,您無權訪問Rails視圖幫助程序方法(渲染是其中之一)。包含在視圖文件夾中的.js.erb代碼在響應請求時動態地呈現並且可以訪問Rails視圖幫助器方法。

+0

我改變了respond_to respond_with現在我得到**未定義的方法'respond_with'爲.... ***再次,我把我的js.erb文件放在同一個視圖文件夾,我有我的部分。我的js.erb文件不能在JavaScript文件夾中工作。它不會給出任何錯誤,但它不會做任何事情。 –

0

如果控制器/模型被命名爲Batch和BatchesController,那麼模板應該在views/batches/*。所以:

views/batches/index.html和JS views/batches/create.js.erb

,並澄清,模板名稱應該是相同的控制器上的操作方法。所以如果你有一個索引方法的BatchesController ..那麼默認情況下,rails將會調用views/batches/index.html。如果你想從你的創建方法中調用js模板,然後像你一樣在你的BatchesController中創建方法的respond_to方法將調用views/batches/create.js.erb