所有这些JavaScript到底都去哪儿了
Where does all of this javascript go anyway?
<div id="title">
<h1>Explore Your Lending Options</h1>
<div class="row">
<button class="btn btn-primary" id="filter_projects">Filter Projects</button> </br>
<%= render partial: "shared/project_filters" %>
<div id="projects"></div>
</div>
</div>
<script charset="utf-8">
$("#filter_projects").on("click", function() {
$("#filters").animate({width: "toggle"}, 1000);
});
</script>
<script charset="utf-8">
$(document).ready(function() {
var auth_token = " <%= form_authenticity_token %>"
var cleanFilters = function(filters) {
var cleanedFilters = [];
filters.forEach(function(element) {
cleanedFilters.push(element.match(/'[(.*?)']/)[1]);
});
return cleanedFilters;
}
var appendProject = function(project) {
$("#projects").append(
"<div><a href='/" + project.organization + "/projects/" + project.id + "'>" + project.title + "</a></div>" +
"<a href='/" + project.organization + "/projects/" + project.id + "'><img src='" + project.image_url +
"' width='250px' height='auto'></a>" + "<div class='project-desc'>" + project.description + "</div>" +
'<form action="/pending_loan" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden"' +
'value="✓" /><input type="hidden" name="authenticity_token" value="' + auth_token + '" />' +
'<input value="1" type="hidden" name="pending_loan[project_id]" id="pending_loan_' + project.id + '" />' +
'<input value="2500" type="hidden" name="pending_loan[loan_amount]" id="pending_loan_loan_amount" />' +
'<input type="submit" name="commit" value="Lend $25" class="btn btn-default" /></form>'
)
}
var appendProjects = function(projects) {
projects.forEach(function(project) {
appendProject(project);
});
};
var renderProjects = function(filteredProjects) {
$("#projects").empty();
console.log(filteredProjects);
appendProjects(filteredProjects);
};
var filterProjectsByCategory = function(projects, checkedFilters) {
return projects.filter(function(project) {
return project.categories.some(function(category) {
return checkedFilters.indexOf(category) > -1;
});
});
};
var filterProjects = function(projects, checkedFilters) {
projectsFilteredByCategory = filterProjectsByCategory(projects, checkedFilters);
//return filterProjectsByPrice(projectsFilteredByCategory, checkedFilters);
return projectsFilteredByCategory;
};
var all_projects;
$.getJSON("/projects.json", function(data) {
all_projects= data;
console.log(all_projects);
var initial_category_selected = window.location.href.slice(window.location.href.indexOf('=') + 1);
//window.location.search gives us query parameters. so that's sick
var initial_categories = [];
initial_categories.push(initial_category_selected);
var filteredProjects = filterProjects(all_projects, initial_categories);
renderProjects(filteredProjects);
});
$(":checkbox").on("click", function() {
var filters = [];
$("input:checked").each(function(index) {
filters.push(this.name);
});
var cleanedFilters = cleanFilters(filters);
var filteredProjects = filterProjects(all_projects, cleanedFilters)
renderProjects(filteredProjects);
});
});
</script>
以上是我的index.html.erb文件,其中包含一堆erb,html和javascript函数。我应该把所有的javascript函数放在哪里?他们都去哪儿了?我所有的jquery都去哪儿了?有没有一种方法可以不用所有标签?
首先,您需要将javascript文件放入app/assets/javascript文件夹。
您可以根据需要选择一种方法。有两种方法可以包含 javascript 文件:
1(如果您希望该JavaScript文件仅包含在一个页面中,则可以在视图中编写以下代码:
= javascript_include_tag 'file.js'
并将以下行添加到 config/environment/production.rb 中(在生产模式下制作 Rails 预编译文件需要它(:
config.assets.precompile += %w(file.js)
之后,您只能在连接它的页面中使用此文件。
2(您可以将此行添加到app/assets/javascripts/application.js
//= require file
之后,您可以在所有页面中使用JavaScript代码。
是的,你可以把所有的jquery,javascript函数都保留在
app/assets/javascripts folder
应用程序.js将自动调用所有所需的JavaScript。
rails 中理想的方法是将 javascript 放在与控制器名称对应的文件夹中app/assets/javascripts
,
例如,如果你有一个projects_controller
那么你可以将相应的javascript代码放在app/assets/javascripts/projects.js
这将自动加载到您的index
页面上,因为您的app/assets/javascripts/application.js
文件中
的这一行 //= require .
这将加载该文件夹中所有可用的 js 文件。
但是这种方法不必要地加载了该视图可能不需要的其他 js 文件,以摆脱它从应用程序中删除//= require .
.js并将javascript_include_tag 'projects.js'
添加到您的索引.html.erb 文件中,例如
<% content_for :javascript_includes do %>
<%= javascript_include_tag "projects.js" %>
<% end %>
这样,这个 JavaScript 只加载到你使用它的视图上。
对于 jquery,我假设您已经在使用 gem(因为您没有通过 index.html.erb 上的任何脚本标签加载它(,您只需要在应用程序.js文件中要求它,如下所示:
//= require jquery
要进行更多挖掘,您可以尝试在 Rails 中进行布局和渲染
- 如何循环浏览页面源中的所有文本框元素并查找所有这些文本框的名称
- 从表单字段复制数据并将其放在echo语句中,所有这些都在$xml=simplexmlload_file函数中
- 所有这些JavaScript到底都去哪儿了
- 如何使用javascript分隔这些字符串
- JavaScript-所有DOM操作函数都返回null/empty
- JavaScript - 所有 onClick 事件都不起作用
- 是否可以对 React.js DOM 树执行所有这些 jQuery 操作
- 设置同步/异步函数序列的正确方法,所有这些函数都可以停止表单提交和进一步处理
- 验证表单,检查用户是否存在,注册它们.所有这些都与阿贾克斯有关
- Javascript中这些日期之间的区别?为什么不是所有的浏览器都给出相同的结果
- 如何使用单选按钮禁用下拉列表中的选项,所有这些都在同一个下拉列表中.使用Javascript
- 包括所有这些第三方javascript文件是否会带来安全风险
- Javascript运行对象和所有这些方法
- Javascript散列和密码实现,任何脚本都可以处理所有这些
- 为什么所有这些Javascript原型继承方法看起来都是一样的?
- 我如何将所有这些函数压缩到一个Javascript中
- 可访问性和所有这些JavaScript框架
- 当加载到浏览器url栏时,javascript可以执行所有这些操作吗
- JavaScript:如何调用prototype属性上的一个函数,从prototype属性的另一个函数内部调用,所有这些
- 如何将所有这些逻辑与javascript Promises混合