【发布时间】:2018-01-14 13:45:42
【问题描述】:
首先,我对 Ruby on Rails 和 Ruby 非常陌生(3 周) 经验),我来自 Java 和 JavaFX 背景。
我创建了一个小型电子商务网站,您可以在这里找到所有代码 -> https://github.com/goxr3plus/Ruby-on-Rails-eCommerce-Website
问题描述
因此,您可以看到一个名为 Basket (0) 的链接,其中 0 是篮子中的项目数。这个数字是一个红宝石变量,每次用户按Add to Basket 获取新项目时它都会增加。
那么问题是什么? 当按下添加到购物篮时,我不想重新加载所有网站,以便将 Basket (0) 的文本转到 Basket(1)。
我不知道如何实现这个......这是Rails控制器在创建新项目并将其添加到购物篮时的代码。
line_items_controller.rb(Full Code)(实际上是购物车项目控制器)
def create
/....code code
//.. Ok so now the basket item counter has increased
**How i can call some javascript code to refresh the Navigation Bar without reloading the website ?**
end
来自导航栏的代码 (_header.html.erb) (Full Code)
<span class="badge badge-pill badge-warning" id="total_cart_items_badge"><%= @current_cart.line_items.count %></span>
如需更多信息,请咨询我。我正在搜索 2 天现在找不到解决方案...
随机想法
如果我在
application.js上定义这个函数:function updateHeaderBar() { $('total_cart_items_badge').text(totalBasketItems) }如何从
line_items_controller.rb调用它?
终于
例如在JavaFX 中,我们可以定义值更改侦听器和绑定,因此每次值更改时都会触发一个动作(您可以调用方法等)。
Ruby on Rails 有类似的东西吗?
【问题讨论】:
-
您将需要 AJAX 调用。一种简单的方法是为您的按钮创建一个 javascript 函数并阻止它执行通常的操作。然后在您的控制器中接受 json 格式。最后,使用返回的数据更新页面。
-
@RezaKazemirad 假设我在
application.js中有一个jquery函数。它根据它的 id 检测给定的 SPAN 并更改它的内容$('total_cart_items_badge').text(total)。我如何从 Rails 控制器内部调用此函数。我也可以举一个你的解决方案的例子吗?你可以添加一个答案,我不会投反对票:)
标签: ruby-on-rails ruby ajax