Rails для обучения - Маршруты не работают в моем первом уроке - noob - PullRequest
0 голосов
/ 11 ноября 2018

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

Я следую этому уроку. Я использую все самое современное, я думаю, что он в рельсах 4, а я в рельсах 5.

https://youtu.be/GY7Ps8fqGdc?t=703

Ни в коем случае не смотрите учебник, необходимый для понимания моего вопроса. Прямо там, где я установил связь, единственное, что он сделал, кроме создания простого приложения rails, - это сгенерировал контроллер, подобный следующему:

rails generate controller welcome index

Тогда прямо там, где я ссылался на видео, он заходит в файл маршрутов и раскомментирует строку, которой нет в моем приложении rails, поэтому я просто написал это от руки

root 'welcome#index'

И происходит сбой при попытке загрузить localhost: 3000, выдавая исключение "TypeError: Object не поддерживает это свойство или метод"

Есть какая-то функциональность, которая устарела или что-то в этом роде? Почему это не работает? Я сделал урок до того, где я связался по крайней мере 5 раз. Я очень старался решить эту проблему безрезультатно.

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

Пожалуйста, о, замечательный форум, подарите мне ответ, и я передам вам благосклонность и большое спасибо.

Кроме того, если учесть, что кто-то мог бы порекомендовать учебные ресурсы, которые помогли вам освоить эту систему, я был бы рад принять совет в дополнение к ответу на этот вопрос.

РЕДАКТИРОВАТЬ: включить запрашиваемую информацию

файл rout.rb

    Rails.application.routes.draw do
  get 'sausage/tuna'
  root 'sausage#tuna'
end

the error output

Последний кусок информации, вероятно, очевидный, я называю свои вещи смешными именами, поэтому общие слова "welcome" и "index" не смущают меня. Я черпаю вдохновение в новом Бостоне и назвал мой «тунец с колбасой» вместо «индекса приветствия».

Еще раз спасибо за помощь мне. Я очень хочу научиться этому.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Я нашел твердое решение проблемы. Я установил node.js и теперь могу без проблем использовать кофе.

0 голосов
/ 11 ноября 2018

Хорошо, проблема, похоже, исходит от ExecJS, который в основном является жемчужиной, которая имеет дело с JS в Ruby.

Оскорбительная строка: <%= stylesheet_link_tag 'application', media: 'all' %> (как вы можете видеть, я теряю бит турболинк, потому что я не использую турболинк)

Что это значит? В основном эта строка предназначена для выделенного листа кода JS, прикрепленного к этой странице.

где находится этот код? In application.html.erb. application.html.erb является макетом представления по умолчанию. Это означает, что каждое представление, инициируемое вашим кодом, наследуется от этого «основного» представления.

Так что в основном ваша маршрутизация хороша, если ошибка переходит на этот этап. Ваше действие с колбасой # тунца запускается, а затем отображается представление `tuna.html.erb", но с ошибкой в ​​этом главном представлении.

В основном, потому что у вас есть ошибка на application.html.erb, вы получите ту же ошибку для каждого действия любого контроллера и каждого сработавшего представления.

Теперь, в чем проблема? Ну, я никогда не допускал этой ошибки, но пропуск кофе, кажется, решил вашу проблему. Хотя в моем случае у меня есть gem 'coffee-rails', и некоторые из моих файлов JS на самом деле являются файлами coffee.erb, и я не получаю ту же ошибку. Так что я думаю, что это немного сложнее, чем это ..

Но для того, чтобы вы лучше понимали Rails, эта строка, как я уже говорил ранее, компилирует некоторый JS и присоединяет его к файлу основного представления (затем к каждому представлению вашего приложения)

Теперь, если вы хотите знать, что JS будет скомпилировано в этот отдельный лист, посмотрите на файл app/assets/javascrips/application.js.

Вы должны получить что-то вроде:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery3
//= require jquery_ujs
//= require bootstrap
//= require cable
//= require rails.validations
//= require footer.js
//= require serviceworker-companion

Все выглядит так, как будто оно закомментировано, но на самом деле последние строки с //= require фактически собирают JS из разных драгоценных камней. (Jquery, ...)

В моем случае: Jquery, Bootstrap, actioncable ... это Js, которые мне нужны на каждой странице моего приложения ...

Что касается вашего вопроса о хорошем учебнике, то я предпочитаю учебник по началу работы на сайте Rails: https://guides.rubyonrails.org/getting_started.html

EDIT

Моя ошибка. Это таблица стилей, которая создает проблему. Который я даже менее уверен, что могло вызвать это, потому что ExecJS имеет дело с кодом Js в вашем приложении, а не с CSS. Таблица стилей работает точно так же, как указано выше для application.js. Он связывает некоторые таблицы стилей CSS с каждой страницей вашего приложения.

Вот мой app/assets/stylesheets/application.css

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any styles
 * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
 * file per style scope.
 *
 *= require navbars.css.scss
 *= require footer.css.scss
 *= require cookiewarning.css.scss
 *= require_self
 */

@import "bootstrap-sprockets";
@import "bootstrap";

Как видите, на каждой странице моего приложения есть CSS-панель navbar и css нижнего колонтитула, а также некоторые другие CSS.

(И спасибо, что приняли мой ответ в качестве ответа, но он определенно нет, просто хотел объяснить вам, что делали :))

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