【问题标题】:Javascript Rails template doesn't work properlyJavascript Rails 模板无法正常工作
【发布时间】:2013-02-14 11:40:49
【问题描述】:

我尝试为网上商店制作一个基于 Ajax 的解决方案。 所以我有购物车,当用户添加一些东西时,我不想重新加载所有页面,而只需要“购物车”模板。 (订单项属于购物车) 在 Line Item 中创建方法:

#usualstuff
respond_to do |format|
if @line_item.save
format.html { redirect_to(store_url) }
format.js
format.xml { render :xml => @line_item,
:status => :created, :location => @line_item }
else
...

把create.js文件放到/views/line_items

这就是问题所在。

实际上它有效。但是当我点击“添加到购物车”按钮时,没有任何变化,直到我重新加载页面。

显示服务器日志:

Rendered line_items/create.js (0.0ms)

0.0ms - 肯定意味着有问题,但我无法弄清楚这一点。看起来 Rails 只是打开它,什么都不做。

可能是什么原因?

create.js 中的代码

page.replace_html('cart' , render(@cart))

【问题讨论】:

  • 是否可以看到您正在进行的 ajax 调用以及成功功能?
  • 我很菜鸟,所以不确定你想看的我没看错
  • product), :remote => true %>
  • ajax 调用你制作的动态更新购物车
  • 来自关于 Rails 的书:我们想改变它以发送 Ajax 请求。为此,我们只需在调用中添加一个 :remote => true 参数。

标签: javascript ruby-on-rails ajax


【解决方案1】:

您仍然需要在 javascript 或 jquery 中编写实际的 ajax 请求来调用控制器上的方法来更新显示。

ruby 是一种服务器端语言,因此您需要对服务器进行 ajax 调用以获取您希望用于更新页面的数据。

检查这个post,他们似乎正在做一些与你类似的事情,这可能会有一些用处。如果您不确定 ajax 是什么,请查看 link

希望这会有所帮助。

【讨论】:

  • 实际上问题是我使用了以前版本的 Rails 的教程,然后他们强制使用 jq 而不是通常的 js
【解决方案2】:

所以.js/.rjs 模板在rails >3.0 中不起作用,应该是.js.erb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2011-02-10
    • 1970-01-01
    • 2015-06-04
    • 2020-10-09
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多