首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4 NoMethodError在Products#index中使用helper_method

Rails 4 NoMethodError在Products#index中使用helper_method
EN

Stack Overflow用户
提问于 2014-04-26 10:44:50
回答 3查看 521关注 0票数 1

试图为我的rails应用程序添加一个简单的库存控制系统

将库存字段添加到现有产品数据库中。

创建了一个名为print_stock的助手方法,并将其添加到Products#index文件中,但当我运行该应用程序时

代码语言:javascript
复制
NoMethodError in Products#index, undefined method `print_stock' for #<#Class:0x007f821b670530>:0x007f821e170898>

向产品增加库存

代码语言:javascript
复制
class AddStockToProducts < ActiveRecord::Migration
  def change
    add_column :products, :stock, :integer, default: 0
  end
end

index.html

代码语言:javascript
复制
<tbody>
    <% @products.each do |product| %>
      <tr>
        <td><%= image_tag "products/#{product.image_url}" %></td>
        <td><%= product.title %></td>
        <td><%= print_price(product.price) %></td>
        **<td><%= print_stock(product.stock) %></td>**<---error
        <td><%= product.description %></td>
        <td><%= link_to 'Show', product_path(product) %></td>
        <td><%= link_to 'Edit', edit_product_path(product) %></td>
        <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

print.stock.rb

代码语言:javascript
复制
def print_stock(stock)
  if stock > 0
    <span class="in_stock">In Stock (XX)</span>
  else
    <span class="out_stock">Out of Stock</span>
  end
end

更新的应用程序助手

代码语言:javascript
复制
module ApplicationHelper
def print_stock(stock)
    if stock > 0
      "<span class="in_stock">In Stock (XX)</span>"
    else
      "<span class="out_stock">Out of Stock</span>"
    end
  end
end

/Users/neilpatel/Desktop/Rails/merchant/app/helpers/application_helper.rb:4: syntax error, unexpected tIDENTIFIER, expecting keyword_end "<span class="in_stock">In Stock (XX)</span>" ^ /Users/neilpatel/Desktop/Rails/merchant/app/helpers/application_helper.rb:6: syntax error, unexpected tIDENTIFIER, expecting keyword_end "<span class="out_stock">Out of Stock</span>" ^

更新products_helper

代码语言:javascript
复制
module ProductsHelper

    def print_price(price)
        format("£%.2f",price)
    end

  def print_stock(stock)
    if stock.to_i > 0
      return true
    else
      return false
    end
  end

end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-26 10:51:09

助手文件名应该是:

代码语言:javascript
复制
products_helper.rb

其内容应是:

代码语言:javascript
复制
module ProductsHelper
  def print_stock(stock)
    if stock.to_i > 0
      return true
    else
      return false
    end
  end
end

然后从以下角度来看:

代码语言:javascript
复制
index.html
<table>
  <tbody>
    <% @products.each do |product| %>
      <tr>
        <td><%= image_tag "products/#{product.image_url}" %></td>
        <td><%= product.title %></td>
        <td><%= print_price(product.price) %></td>


        <td>
           <% if print_stock(product.stock) %>
              <span class="in_stock">In Stock (XX)</span>
           <% else %>
              <span class="out_stock">Out of Stock</span>
           <% end %>
        </td>

        <td><%= product.description %></td>
        <td><%= link_to 'Show', product_path(product) %></td>
        <td><%= link_to 'Edit', edit_product_path(product) %></td>
        <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

希望它有帮助:)

票数 0
EN

Stack Overflow用户

发布于 2014-04-26 10:53:28

将这些行放在application_helper.rb

代码语言:javascript
复制
module ApplicationHelper
  def print_stock(stock)
    if stock > 0
      "<span class="in_stock">In Stock (XX)</span>"
    else
      "<span class="out_stock">Out of Stock</span>"
    end
  end
end
票数 0
EN

Stack Overflow用户

发布于 2014-04-26 12:28:12

相同的答案,但需要更改一些语法

代码语言:javascript
复制
module ApplicationHelper
 def print_stock(stock)
  if stock > 0
   "<span class='in_stock'>In Stock (XX)</span>"
  else
   "<span class='out_stock'>Out of Stock</span>"
 end
end

结束

需要更改为single quotes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23309742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档