我正在尝试使用Ruby on Rails构建一个小型Web应用程序。这是一个跟踪人们感兴趣的股票的简单工具。
对于我使用stock_quote gem的股票数据。
目前,我有一个带有单个字段的模型,'ticker'。在这里,人们会输入他们有兴趣观看的股票的股票代码。我希望能够在用户登录时填写基于股票代码的信息表(完整的公司名称,价格等)。当我测试我当前的方法时,我得到一个“未初始化的常量Target :: StockQuote”错误。但是,当我在控制台中调用我的方法get_current_price或get_company_name时,它们可以完美地工作。我知道我需要保持我的观点愚蠢,但我不确定如何让它变得更简单 - 让它们正常工作。
我希望能够在我的仪表板表中填写用户正在观看的股票的信息。鉴于模型存储了股票代码(即AAPL),我需要以某种方式将股票代码输入到模型中的一系列方法中,这些方法从stock_quote API中提取适当的数据并将结果返回到我的HTML表格。
感谢您的帮助
stock.rb
class Stock < ActiveRecord::Base
attr_accessible :ticker
def get_company_name(ticker)
company_name = StockQuote::Stock.quote(ticker).company
end
def get_current_price(ticker)
company_name = StockQuote::Stock.quote(ticker).last
end
end
stocks_controller.rb
class StocksController < ApplicationController
def dashboard
@stocks = Stock.all
end
end
dashboard.html.erb
<tbody>
<% @stocks.each do |stock| %>
<tr>
<td><%= stock.get_company_name(stock.ticker) %></td>
<td><%= stock.stock %></td>
<td><%= button_to "Delete", edit_target_path, :class => "btn btn-small btn-danger" %> </td>
</tr>
<% end %>
</tbody>
答案 0 :(得分:-1)
您需要更新按钮以指向stock
对象并告诉它操作&amp;该操作的方法是delete
。
<td><%= button_to "Delete", {:action => "delete", :id => stock.id }, :method => :delete, :class => "btn btn-small btn-danger" %></td>
请参阅:http://apidock.com/rails/v3.2.8/ActionView/Helpers/UrlHelper/button_to
或者,我认为这种语法更好:
<td><%= link_to "Delete", stock, :method => :delete, :class => "btn btn-small btn-danger" %></td>
<强>加成强>
您的股票类别编写效率低下。由于您正在调用实例方法,因此您无需将ticker
值传递给get_company_name
和get_current_price
。实例方法已在特定Stock对象的上下文中运行,因此他们已经知道ticker
的值是什么。这就是在您的视图中stock
调用该方法的意义,即stock.company_name
。
class Stock < ActiveRecord::Base
attr_accessible :ticker
def company_name
StockQuote::Stock.quote(ticker).company
end
def current_price
StockQuote::Stock.quote(ticker).last
end
end