Rails – 通过ajax显示索引和显示操作的结果
我有一个非常简单的Post资源,有两个动作, 索引和显示 。 我的模板包含一个侧栏,其中包含指向每个post的链接。 我希望侧边栏链接通过ajax显示其内容(即“show”操作的结果 )
我知道有很多优秀的 tuts向你展示如何创建一个用ajax提交的表单,但这次我想用它来显示我的索引的内容并显示没有页面引用的动作
。 是否有任何体面的教程提供如何做到这一点的提示?
我想我需要创建一个show.js.erb文件,并告诉我的索引操作响应js但我有点陷入困境。 我不知道在控制器的show动作或show.js.erb中放什么 – 想象我需要做什么有点困难
PS – 使用rails 3.0.7,jquery-1.5
有了这个工作,它最终非常简单。
第1步 – 将add :remote => true
添加到侧栏中的链接
#application.html.haml %nav#sidebar - for post in @posts = link_to post.title, post_path, :remote => true %div#main = yield
第2步 – 告诉你的控制器在show动作上回应JS
def show @post = Post.find(params[:id]) @posts=Post.all # needed for sidebar, probably better to use a cell for this respond_to do |format| format.html # show.html.erb format.js # show.js.erb end end
第3步 – 创建_post.html.haml
# _post.html.haml %article.post = sanitize post.body
第4步 – 创建show.js.erb并将#main div中的html替换为_post partial(我们在步骤3中创建)的内容
# show.js.erb $("#main").html("<%= escape_javascript(render @post) %>");
现在所有内容都通过ajax传递,并且工作正常。
我手边没有完整的答案,因为我对此也相对较新。
但是,我首先来看看JQuery的get()
方法。 您应该能够使用它来调用索引或show方法。 这些方法应该返回要在页面的非侧边栏部分中显示的html。 您可以使用get()
的回调处理程序将该HTML放入页面上的相应div中。
对不起,这有点模糊,但是如果你玩这个我打赌你会明白的。
- AJAX请求从每个页面命中服务器,我找不到原始AJAX调用的来源
- 有没有:disable_with等效于link_to_remote?
- 重定向发出PATCH请求而不是GET
- kaminari ajax分页不更新分页
- Rails 4:如何通过AJAX更新基于另一个collection_select的collection_select?
- Rails remote => true confusion(没有format.js?)
- 未捕获的TypeError:undefined不是函数rails3 / backbone / js
- Rails:用户使用以下命令销毁不相关的对象后退出:remote => true
- 动态地将params插入到Rails中的link_to