RoR - Stock Quote Gem - не удалось получить данные - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь получить данные с помощью котировки акций, предоставляя тикер акций в форме с параметрами, но я не могу продемонстрировать какое-либо значение.

моя форма:

<h1>My portfolio</h1>
<h3>Search for Stocks</h3>

<div class="stock-lookup">
    <%= form_tag search_stocks_path, remote: true, method: :get, id:"stock-lookup-form", enforce_utf8: false do %>
        <div class="form-group row no-padding text-center col-md-12">
            <div class="col-md-10">
                <%= text_field_tag :stock, params[:stock], placeholder: "Stock ticker symbol", autofocus: true, class: "form-control search-box input-lg" %>
            </div>
            <div class="col-md-2">
                <%= button_tag(type: :submit, class: "btn btn-lg btn-success") do %>
                    <i class="fa fa-search"></i> Look up a stock
                <% end %>
            </div>
        </div>

    <% end %>
</div>
<div id="results">
    <%= render 'users/result' %>
</div>

частичное _result.html.erb:

<div class="results-block">
    <%= bootstrap_flash %>
</div>

<% if @stock %>
    <div class="well results-block">
        <strong>Symbol: </strong><%= @stock.ticker %>
        <strong>Name: </strong><%= @stock.name %>
        <strong>Price: </strong><%= @stock.last_price %>
        <%= link_to "Add to my stocks", user_stocks_path(user: current_user, stock_ticker: @stock.ticker), class: "btn btn-xs btn-success", method: :post %>
    </div>
<% end %>

_result.js.erb:

$('#results').html("<%= j (render 'users/result.html') %>")

маршруты:

   Rails.application.routes.draw do
      devise_for :users
      # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
      root 'welcome#index'
      get 'my_portfolio', to: 'users#my_portfolio'
      get 'search_stocks', to: 'stocks#search', as: 'search_stocks'
      resources :user_stocks, only: [:create]
    end

stocks_controller.rb:

class StocksController < ApplicationController

  def search


     if params[:stock].blank?
       flash.now[:danger] = "you have entered an empty search string"  
     else
        @stock = Stock.new_from_lookup(params[:stock])

       flash.now[:danger] = "you have entered an incorrect symbol" unless @stock
     end
     respond_to do |format|
       format.js {render partial: 'users/result'}
     end



  end

end

и модель акций:

class Stock < ApplicationRecord
    has_many :user_stocks
    has_many :users, through: :user_stocks

    def self.find_by_ticker(ticker_symbol)
        where(ticker: ticker_symbol).first
    end

    def self.new_from_lookup(ticker_symbol)
        begin
            looked_up_stock = StockQuote::Stock.quote(ticker_symbol)
            price = strip_commas(looked_up_stock.latest_price)
            new(name: looked_up_stock.company_name, ticker: looked_up_stock.symbol, last_price: price)

        rescue Exception => e
            return nil
        end
    end

    def self.strip_commas(number)
        number.gsub(",", "")
    end

end

Я пытаюсь продемонстрировать стоимость акций, как показано ниже:

enter image description here

но все, что я получаю, это сообщение об ошибке, указанное на контроллере запасов.Кажется, я не могу добраться до базы данных котировок акций.

1 Ответ

0 голосов
/ 09 октября 2018

Нашли решение, просто необходимое для объявления .to_s по методу strip_commas на стоковой модели, как таковое:

def self.strip_commas(number)
  number.to_s.gsub(",", "")
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...