我正在仿照以下两个方法学习制作一个网站。目的是将网页表单内容 l 发送至指定的邮箱。 http://l4u.github.io/articles/create-a-rails-4-site-with-contact-us-form/#add-contact-us-form https://bugjia.net/200207/67730.html
我根据第一个链接的第五步,编写 Contact.rb,并运行服务器查看效果。此时我能够访问到我需求的表单。
点击 submit 按钮后,rails 提示 NameError in ContactsController#create. 及 Uninitialized constant Mail_Form. 出错位置正是 Contact.rb 的第一行。Contact 无法继承 MailForm。
Stackoverflow 上的相关问题提示,是否未安装 mail_form 的 gem 包。随即使用 gem install mail_form 安装。并运行 bundle install。
运行后再次启动服务器,问题没有解决。报错同上。
利用 gem info 查看,mail_form 的确已经被安装了。
mail_form (1.8.1) Authors: José Valim, Carlos Antônio Homepage: https://github.com/plataformatec/mail_form License: MIT Installed at: C:/Ruby26-x64/lib/ruby/gems/2.6.0
利用 bundle show 指令查看是否 mail_form 被应用。提示 Could not find gem 'mail_form'.
这是网页的布局设计
这是 contacts 的 controller
这是 contacts 的 model
小弟才疏学浅,如有低级问题麻烦指路,感激不尽!
这教程作为入门很不友好,一次过参杂了太多第三方 Gem,guard
、livereload
,mail_form
,haml
这几个 gem 都是很小众的,出问题都不知道是哪一个。
把 bundle show
的结果贴上来,确认 mail_form 安装了没。
如果已经安装,启动 server 缺提示找不到,有可能是 guard 或者 livereload 导致重启不完整,命令行 ps
一下看看有没有 ruby 进程没退出,啊是 Windows,不懂 Windows 对应的命令是啥。
非常感谢您的解答。
以下是 bundle show 的结果。 H:\Ruby Program\blog (master) λ bundle show Gems included by the bundle:
确实,mail_form 没有被安装。 重新运行 gem install 后仍然显示没有安装…这是什么情况?
您好 这个是输出。抱歉不知道为什么粘贴格式不太对。已编辑
H:\Ruby Program\blog (master)
λ bundle install
Using rake 13.0.1
Using concurrent-ruby 1.1.6
Using i18n 1.8.3
Using minitest 5.14.1
Using thread_safe 0.3.6
Using tzinfo 1.2.7
Using zeitwerk 2.3.1
Using activesupport 6.0.3.2
Using builder 3.2.4
Using erubi 1.9.0
Using mini_portile2 2.4.0
Using nokogiri 1.10.9 (x64-mingw32)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.6.0
Using rails-html-sanitizer 1.3.0
Using actionview 6.0.3.2
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 6.0.3.2
Using nio4r 2.5.2
Using websocket-extensions 0.1.5
Using websocket-driver 0.7.2
Using actioncable 6.0.3.2
Using globalid 0.4.2
Using activejob 6.0.3.2
Using activemodel 6.0.3.2
Using activerecord 6.0.3.2
Using mimemagic 0.3.5
Using marcel 0.3.3
Using activestorage 6.0.3.2
Using mini_mime 1.0.2
Using mail 2.7.1
Using actionmailbox 6.0.3.2
Using actionmailer 6.0.3.2
Using actiontext 6.0.3.2
Using public_suffix 4.0.5
Using addressable 2.7.0
Using bindex 0.8.1
Using msgpack 1.3.3 (x64-mingw32)
Using bootsnap 1.4.6
Using bundler 1.17.2
Using byebug 11.1.3
Using regexp_parser 1.7.1
Using xpath 3.2.0
Using capybara 3.33.0
Using childprocess 3.0.0
Using ffi 1.13.1 (x64-mingw32)
Using jbuilder 2.10.0
Using method_source 1.0.0
Using puma 4.3.5
Using rack-proxy 0.6.5
Using thor 1.0.1
Using railties 6.0.3.2
Using sprockets 4.0.2
Using sprockets-rails 3.2.1
Using rails 6.0.3.2
Using rubyzip 2.3.0
Using sassc 2.4.0 (x64-mingw32)
Using tilt 2.0.10
Using sassc-rails 2.1.2
Using sass-rails 6.0.0
Using selenium-webdriver 3.142.7
Using sqlite3 1.4.2
Using turbolinks-source 5.2.0
Using turbolinks 5.2.1
Using tzinfo-data 1.2020.1
Using web-console 4.0.3
Using webdrivers 4.4.1
Using webpacker 4.2.2
Gemfile:
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#repo}.git{" }
ruby '2.6.6'
gem 'rails', '~> 6.0.3', '>= 6.0.3.2'
gem 'sqlite3', '~> 1.4'
gem 'puma', '~> 4.1'
gem 'sass-rails', '>= 6'
gem 'webpacker', '~> 4.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.7'
gem 'bootsnap', '>= 1.4.2', require: false
group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end
group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'web-console', '>= 3.3.0' end
group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of web drivers to run system tests with browsers gem 'webdrivers' end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]