Rails 实例方法 class 错误
Rails instance method class error
我想制作一个购物车,我在 rails 中创建了一个新的 class 来调用 ShoppingCart。在 class 中,我有一个名为 total_qualtity 的实例方法。
我在视图中调用此 class 并尝试调用实例方法但我得到了
"NoMethodError in Default#index" 和 "undefined method `total_quantity' for "#":String" 。请帮我解决它。
这是我的 ShoppingCart.rb
class ShoppingCart
attr_accessor :items
def initialize items = Hash.new
@items = items
end
def total_quantity
total = 0
@items.each do |key, value|
total += value.to_i
end
return total
end
这是我的DefaultView.html.erb
<% @cart = session[:cart] || ShoppingCart.new
session[:cart] = @cart
puts session[:cart].total_quantity --> This is place i got error
%>
<div id="header" class="container">
<nav class="navbar navbar-default">
<div class="navbar-header col-sm-4 col-md-3">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><%= image_tag 'logo.png'%></a>
</div>
</nav>
</div>
在会话未完成对象中存储 cart_id 并从该 ID 检索 ShoppingCart 对象。
在控制器中执行此操作
Eg: session[:cart_id]
@cart = ShoppingCart.find(session[:cart_id])
并将@cart 对象传递给视图并像那样使用
@cart.total_quantity
您正在将对象作为 String
分配给 session[:cart_id]
。
我想制作一个购物车,我在 rails 中创建了一个新的 class 来调用 ShoppingCart。在 class 中,我有一个名为 total_qualtity 的实例方法。 我在视图中调用此 class 并尝试调用实例方法但我得到了
"NoMethodError in Default#index" 和 "undefined method `total_quantity' for "#":String" 。请帮我解决它。
这是我的 ShoppingCart.rb
class ShoppingCart
attr_accessor :items
def initialize items = Hash.new
@items = items
end
def total_quantity
total = 0
@items.each do |key, value|
total += value.to_i
end
return total
end
这是我的DefaultView.html.erb
<% @cart = session[:cart] || ShoppingCart.new
session[:cart] = @cart
puts session[:cart].total_quantity --> This is place i got error
%>
<div id="header" class="container">
<nav class="navbar navbar-default">
<div class="navbar-header col-sm-4 col-md-3">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><%= image_tag 'logo.png'%></a>
</div>
</nav>
</div>
在会话未完成对象中存储 cart_id 并从该 ID 检索 ShoppingCart 对象。 在控制器中执行此操作
Eg: session[:cart_id]
@cart = ShoppingCart.find(session[:cart_id])
并将@cart 对象传递给视图并像那样使用
@cart.total_quantity
您正在将对象作为 String
分配给 session[:cart_id]
。