【发布时间】:2015-02-11 04:19:20
【问题描述】:
我正在使用 ajax 请求来呈现部分。它有效,但我使用的设计感觉有些不对劲。
设置:举个例子,我制作了一个基本的博客应用程序,它只是让每个 RESTful 操作(索引、显示、编辑、创建、销毁)响应 ajax 请求。
这是当前的事件流程:
- 使用
remote: true选项单击链接 - 对应控制器的动作响应javascript
- 转到
views/bloggers/correspondingActionName.js.coffee - 在那个views/bloggers目录里面是所有的
js.coffee文件,它们对应于restful的动作。这些js.coffee文件中的每一个通常呈现html.erb部分。示例:
views/bloggers/edit.js.coffee
$form = $('<%= j render("edit") %>').hide()
$bloggers = $('#listing_bloggers')
$bloggers.after($form)
$form.fadeIn 100
views/bloggers/_edit.html.erb
<div id="edit_blogger">
<h1>Editing blogger</h1>
<%= render 'form' %>
<%= link_to 'Back', bloggers_path, remote: true%>
</div>
对所有这一切感觉不正确的部分是感觉好像那些 js.coffee.erb 文件不应该在视图目录中,而是而是位于 assets/javascripts 目录中。
我试图将那些 js.coffee.erb 文件放在 assets/javascripts 目录中,但它一直抛出关于 j render 方法的错误。
问题:有没有办法让它按照我想要的方式工作?也就是说:将所有 javascript(甚至与 ajax 请求相关的 javascript)保留在 assets/javascripts 目录中?或者,有没有比我上面描述的任何一种方式更传统的策略?或者:为什么我现在做的方式是最好的方式,因为感觉不对。
【问题讨论】:
标签: javascript ruby-on-rails ajax coffeescript