吐个槽。发泄一下。实在受不了了。一百个问候语给 Rails 前端的黑魔法。
事情是这样的,我用 <%= link_to '退出登录', signout_path, method: "delete" %>
做一个很简单的退出登录操作。
生成的 HTML 代码是 <a rel="nofollow" data-method="delete" href="/signout">退出登录</a>
。
这就出现问题了,因为浏览器根本不知道 data-method
怎么操作。
忘了把前提告诉大家了,因为实在受不了 Rails 前端的黑魔法,所以把前端的 gem 全摘走了,连 jquery-rails 都没用。
上面报错的原因就是,data-method
的其实是 jquery_ujs
处理的,所以必须先安装这个模块。
还好可以和 jquery-rails
一起安装,算了就应着头皮试试 jquery-rails
的黑魔法吧。
结果在 application.js
加了 //= require jquery
之后,运行又跳 Sprockets::FileNotFound
的异常。
万念俱灰,这个 Sprockets 黑魔法,背后又不知道有多少黑魔法。
作为一个 Rails 新人,我只是想安安静静的享受一下 ActiveRecord,结果跳出来这么多黑魔法。
尝试直接把 routes 里访问登出的方法改成 get match '/signout', to: 'sessions#destroy', via: 'get'
然后摘掉 jquery-rails 模块,bundle install
,添加 //= require jquery-2.1.3.min
结果页面变成:
We're sorry, but something went wrong. If you are the application owner check the logs for more information.
很不寻常啊!网上搜类似的问题都是部署在 Heroku 等生产环境遇到的。
发泄完之后楼主心情超级好 ,谢谢大家的批评指教鼓励。
CGI: Ruby's Bare Metal http://www.mikeperham.com/2015/01/05/cgi-rubys-bare-metal/
这个很适合楼主。
有必要讲一下,为啥我痛定思痛,决定完全抛弃和前端有关的一切 gem。 完全因为那些 gem 更新太快,但肯定不如原生前端项目快,新手找个你若“安好”便是晴天的教程都那么难。 就是这个问题 https://github.com/twbs/bootstrap-sass/issues/463 让我放弃 gem 使用了原生的 bootstrap 肯定会有一些人说我,你不爱鼓捣不适合编程。难道科技的进步不就是要让我这样的人也能充分享受到吗?
#8 楼 @zhutingting 抛开 Ruby,有哪个实际的项目是在不停不停更新自己用的前端 library? 即使 gem 更新速度 跟原生前端项目一样快,光那些 Library 的 API 变化就该改死人了
另外,没有人说过,用 Rails 的话,前端就必须要用 gem,用 bower 也完全没问题,再粗糙点直接复制粘贴都行。
我先试着回答一下楼主的问题:
gem 'jquery-rails'
bundle install
//= require jquery
和//= require jquery_ujs
更新后的内容,大概你不是用 development 模式启动的 Server? 开发模式应该是直接显示错误而不是 500 页面吧.
具体的错误内容检查一下log/*.log
吧,看看到底什么错误。
然后,你到底对黑魔法这个词有多执着。作为新手不要总是抱怨,不要总觉得:哦,为什么和我想的不一样,这是黑魔法,真受不了。 来看看你眼中的黑魔法是怎么处理 data-method 的: https://github.com/rails/jquery-rails/blob/master/vendor/assets/javascripts/jquery_ujs.js#L172-L189 只有十八行,实现方法是生成一个表单然后提交。真的简单到不能再简单。这也算黑魔法的话,那简直遍地黑魔法。
Rails 是面向专业人士设计的,使用简单不代表不需要学习背景知识和练习实践。举个例子,电脑键盘很简单吧,只需要把键按下去就行了。但是!你第一次用的时候能打多快?是不是要边看键盘边看屏幕,不停地找每个键在哪里?必须经过一段时间的练习才能熟练的盲打。而学习 Rails 这样复杂的东西,更是需要很长一段时间的学习练习。
这个不是黑魔法,你没有按照标准的方法使用,出错了,不能怪框架是黑魔法吧,如果你自己实现这个功能,也会一样做的,常规实现罢了。
多学习,然后你就会越来越顺了,加油
我是按照你的方法来的,可能是我删的 gem 太多了,比如 'sass-rails' 'uglifier' 'coffee-rails' 'turbolinks' 'jbuilder' 这些我都删了。我是想简单了,想让 rails 只处理后端,前端手工一下,没想到 link_to 这种常用的 helper 方法也和 jquery 有很多联系。那个错误页面我也不知道是怎么出现的,一直都是 development 环境运行 server 来着。
准备重新屡一遍用到的那些 gem,作为新手遭遇这么多大“坑”,有点浮躁了。
感谢是上面回复的所有人,不一一 @ 了
我以为能学到一点儿 link_to 的新招数呢,没想到是抱怨。
吐个槽。发泄一下。实在受不了了。
ActiveRecord::Base.establish_connection( adapter: 'mysql2', # or 'postgresql' or 'sqlite3' host: 'localhost', database: 'your_database', username: 'your_username', password: 'your_password' )
class SomeClass < ActiveRecord::Base #blah, blah, blah end
puts SomeClass.find :all some_class = SomeClass.new
黑。魔。法 这个说法有点过了吧 RESTful 和 http 请求方式的限制 以及 jquery_ujs 的工作 我觉得还是可以去了解一下的 因为就算抛开 rails,我想我也会这么用