簡體   English   中英

Ruby on Rails-包含View文件夾中的javascript文件

[英]Ruby on Rails - Include javascript files from view folder

我的問題如下:

我想在js.erb文件中使用<%render =>“ xx”%>-因此我不能將其放在我的資產文件夾中,因為渲染在資產文件中不起作用。

我已經嘗試將其命名為index.js.erb以便自動將其包括在內(它位於視圖文件夾中,請參見下文),但是我猜想它沒有包含在內,因為我刪除了admin.js中的require_tree行(這是我的管理名稱空間的“ application.js”。 我不能簡單地使用require樹,因為我不希望包含資產/ javascripts / admin中的每個js文件。

我在這里有我的js文件:

views/admin/benefits/index.js.erb

我想在以下視圖中使用它:

views/admin/benefits/index.html.erb

我在這里過於復雜嗎? 如果沒有,我該如何納入我的看法? 如果重要:我使用滑軌4。

將其移至資產,並在布局文件的head添加可選的yield

在您的布局文件中

<% if content_for?(:javascripts) %>
  yield(:javascripts)
<% end %>

在您看來

<% content_for :javascripts do %>
  <%= javascript_include_tag 'benefits/index' %>
<% end %>

我認為您誤會了此文件的用途。 js.erb文件允許您在JavaScript文件中使用Ruby。 您實際上無法渲染此文件。 您可以在此處查看使用原因的更好理解。

js.erb文件與使用respond_to塊,允許控制器到您的Ajax請求作出回應。

def create
  respond_to do |format|
    ...
    format.js
    ...
  end
end

然后,您將擁有一個相應的app/views/users/create.js.erb視圖文件,該文件將生成實際的JavaScript代碼,這些代碼將在客戶端上發送和執行。

$("<%= escape_javascript(render @user) %>").appendTo("#users");

更多信息在這里

例如,您可以在assets/javascript/admin/benefits.js定義javascript代碼。 僅在application.js包含此文件,例如:

//= require admin/benefits

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM