Попытка сохранить данные API в моей базе данных, @headline не заполняется для таблицы - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь сохранить данные новостей для акций из API в моей базе данных "Заголовок".Но я думаю, что мои параметры контроллера неверны, и поэтому я не могу заполнить элемент, чтобы сохранить его на моем столе.

Я попытался изменить параметры @headline = Headline.new_from_lookup (params [: stock]) на: ticker: symbol, но ничего не изменилось.По-прежнему получает неопределенный метод `save 'для nil: NilClass

Routes.rb

Rails.application.routes.draw do # Приоритет основан на порядке создания: сначала создан -> самый высокий приоритет,# Посмотрите, как все ваши маршруты размечены с помощью «рейковых маршрутов».

root 'headlines # new'

resources: headlines

end

headline.rb

Заголовок класса

def self.new_from_lookup(symbol)
    begin
    looked_up_stock = IEX::Resources::Quote.get(symbol)
    looked_up_news = IEX::Resources::News.get(symbol)
    new(ticker: looked_up_stock.symbol, name: looked_up_stock.companyName, headline: looked_up_news.first.headline, summary: looked_up_news.first.summary, url: looked_up_news.first.url)
    rescue Exception => e
        return nil
    end
end

end

headline_controller.rb

класс HeadlinesController

def new
    @headline = Headline.new
end

def create
 # takes input from the search page then finds the stock info with the model headline.rb
    @headline = Headline.new_from_lookup(params[:symbol])

    @headline.save # saves the headline info to the database

    redirect_to headline_path(@headline) # directs the user to the show path
end

def show
    @headline = Headline.find(params[:id]) # shows the news from the database that was just entered
end

end

new.html.erb

    <h1>Choose Stock News</h1>

        <%= form_for @headline do |f| %>
            <p>
                <%= f.label :ticker %>
                <%= f.text_field :ticker %>
            </p>
            <p>
                <%= f.submit %>
            </p>

        <% end %>



</body>

show.html.erb

Отображение выбранных биржевых новостей

Тикер:

Имя:

Заголовок:

Сводка:

URL:

Создано:

Обновлено:

1 Ответ

0 голосов
/ 27 марта 2019

Вместо

rescue Exception => e
        return nil
    end

напишите

rescue Exception => e
        puts e.message
        puts e.stacktrace.join("\n")
        return nil
    end

, по крайней мере, вы можете увидеть, какая у вас ошибка

плюс в контроллере, которую вы должны проверить позже, если объектноль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...