有没有办法为Rails模型生成一个具有has_and_belongs_to_many或has_many:through关系的脚手架?如果没有,是否有一个发展原因,为什么没有包括这个功能的一些基本形式?Rails要求开发人员生成并编辑"自定义""连接表迁移".对细节的必要关注是一种提醒Rails开发人员注意某些重要事实的方法,还是仅仅是Rails如何"正在进行中?"的一个例子.
快速Stackoverflow搜索:
"has_and_belongs_to_many" yields 821 questions
"has_many :through" yields 933 questions
Run Code Online (Sandbox Code Playgroud)
......其中许多都以"我如何......"开头.所以看起来这个话题对于SO用户来说并不是微不足道的.我猜我想知道它为什么没有引起注意.事情比看起来更复杂吗?Rails的功能集似乎非常广泛.我一直在想为什么省略了与连接表关联的脚手架.
请把你的答案集中在上面的断言或"包括声明",脚手架必须包括......"或"轨道生成脚本需要......"
谢谢!
我正在使用Twitter引导程序和Rails,我似乎无法将导航栏项目浮动到右侧.
我试过用这样的东西:
<li class="whoami pull-right"> <%= link_to ("Logged in as: " + current_user.name), edit_user_registration_path , :id=>"Edit account"%> </li>
Run Code Online (Sandbox Code Playgroud)
......但是链接保持不变,萤火虫显示出来了 "float:left;"
所以我试图将css浮在里面bootstrap_and_overrides.css.less和里面home.html.erb,但都没有奏效.Firebug表示它发现了两个css float语句,但选择了bootstrap选项.所以我被困住了,想知道如何自定义导航栏.我可能在这里做错了,但我只是没有看到它.
这是我的代码:
application.html.erb:
<!DOCTYPE html>
<html>
<head>
... removed to shorten the length of this post
</head>
<body>
<header>
<%= render 'layouts/navigation' %>
</header>
<div id="main" role="main">
<div class="container">
<div class="content">
<div class="row">
<div class="span12">
<%= render 'layouts/messages' %>
<%= yield %>
</div>
</div>
<footer>
</footer>
</div>
</div> <!--! end of .container -->
</div> <!--! …Run Code Online (Sandbox Code Playgroud) 如果我添加:
config.include FactoryGirl::Syntax::Methods
Run Code Online (Sandbox Code Playgroud)
下
RSpec.configure do |config|
Run Code Online (Sandbox Code Playgroud)
并运行rspec,我看到这个错误:
/Users/perry_mac/rails_projects/mymri/spec/spec_helper.rb:21:in"block in":未初始化的常量FactoryGirl(NameError)
我的gemfile.lock可以在这个pastebin中看到
我的gemfile可以在这个pastebin中看到
如果我省略Rspec.comfigure语句,我的测试都运行正常.我想使用缩写语法,但我不确定我在这里做错了什么.
我的麻烦出现在Ruby的第11章on Rails的教程在这里.
我看到这个rspec错误:
Failure/Error: :user => Factory(:user, :email => Factory.next(:email)))
ActiveRecord::RecordInvalid:
Validation failed: Email has already been taken
Run Code Online (Sandbox Code Playgroud)
先在user_spec.rb那里micropost_spec.rb.这真是令人费解.我认为每次autotest运行rspec时,工厂语句都在一个新的测试数据库中生成一个用户.我用git检查了主分支中的源文件并再次尝试,但看到了同样的错误.因此我怀疑它与db内容有关,而不是代码.
所以,我做了以下事情:
restarted "rails s"
restarted autotest
rake db:reset
rake db:migrate
rake db:test:prepare
rake db:populate
Run Code Online (Sandbox Code Playgroud)
......一切都变绿了.rspec测试通过了.
可能有一个更"重要"的解决方案,但我很激动这个工作.希望它可以帮助别人.我只能得出结论,我的测试/开发以某种方式向db添加了一些意想不到的东西.我想上面的步骤是在第11章结尾附近让自己成为新数据库的好方法.
有没有更直接的方法来解决这个问题?错误是否表明我在没有意识到的情况下解决了其他问题?我认为运行rspec并不能保证每次都有新的测试数据库.这是一个错误的假设吗?
rspec ruby-on-rails rspec-rails ruby-on-rails-3 railstutorial.org
我是一位经验丰富的程序员,也是Ruby on Rails的热心新人.我主要使用mac,unix和textMate来完成工作.我自己编写了一些小应用程序,并对编写更复杂的东西感到兴奋.
我应该投入时间和资源来使用(学习)用于RoR的IDE吗?如果您是使用类似我的配置和用于RoR的IDE的人,请回复.
这不是关于哪个IDE是最好的,或者哪个平台是RoR首选的问题.
我更关心的是承诺的成本/效益任何这是建立在一个广泛的变化和发展的工具的IDE.
此外,仅仅使用文本编辑器的文件结构和目录布局的详细了解似乎是一种很好的技能,随着我扩展我对rails中功能的使用而继续增长.
并且...... HTML,CSS和ruby都使用具有最基本格式化功能的文本编辑器进行了很好的评估.
从好的方面来说,我发现提供手持(IDE模板,自动完成文本等)的IDE用于生成RSpec的单元测试(TDD)很吸引人,因为这是我经验有限的领域.
我最担心的是,我将提交一个IDE,编写一个应用程序,然后在ruby,rails或其他一些关键组件时遇到困难,我正在以一种IDE人们从未预料到的方式使用更新.在过去,使用IDE并定期编辑特定IDE范例之外的文件或资源已经烧毁了我.以前的问题还包括IDE没有考虑到的语言功能,从而限制了开发灵活性.
我也不确定"本地开发"< - >"远程服务器"集成/镜像和版本控制是否最好通过IDE接口处理.git让我印象深刻,高效且易于使用.
这里是否有最好的方法来开展更大的项目,或者两种方法都可以与相关的警告相提并论?我对使用IDE的担忧是否过时或担保?
提前感谢您的意见 -
佩里
附录:这里似乎有一些重叠:使用带Rails的IDE会阻碍我吗?
结论:有很多好的思路.谢谢大家.我很高兴我开始使用unix和文本编辑器学习Ruby和RoR.对于RoR所处的文本负载环境来说,这是一个很好的组合.rvm,git,rspec,gem管理和代码生成都可以通过命令行完成.他们通过Hartl的Rails Tutorial进行了工作,并使用"The Well Grounded Rubyist"中的示例轻松实现.我将查看Rubymine的30天免费试用版.我希望IDE能以(+)方式增加我的初步理解.集成单元测试是我决定尝试IDE的一个重要因素,因为我偶然发现了Rspec.我不认为我的时间(或金钱)浪费在textMate上.两者都很好用.
附录2
我使用Ruby Mine 30天.我确实决定坚持:
......而且他们都非常好.我可以在测试,编码,浏览和版本控制之间快速切换.TextMate的'Bundles'偶尔会作为CSS,Ruby和Rails代码参考提供帮助.
我还可以补充一点,我的大部分"麻烦"源于我认为我可以随时拿起Ruby.不.我不得不阅读并试验并阅读更多内容."获取"Ruby确实为我开辟了Rails.如果你也想改进你的Ruby,这些帮助了我:
我看到描述列表<dl>标记的意外行为.
我正在使用twitter bootstrap 2并使用此示例代码:
<!DOCTYPE html>
<dl class="dl-horizontal">
<dt>Item1</strong></dt><dd>This is a description of Item1</dd>
<dt>Item2</strong></dt><dd>This is a description of Item2</dd>
<dt>Item3</strong></dt><dd>This is a description of Item3</dd>
<dt>Item4</strong></dt><dd>This is a description of Item4</dd>
<dt>Item5</strong></dt><dd>This is a description of Item5</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
......一切正常,我看到了:
Item1 This is a description of Item1
Item2 This is a description of Item2
Item3 This is a description of Item3
Item4 This is a description of Item4
Item5 This is a description of Item5
Run Code Online (Sandbox Code Playgroud)
使用此代码:
<!DOCTYPE html> …Run Code Online (Sandbox Code Playgroud) 这是一个关于在使用Ruby和Rails遇到堆栈级别太深(SystemStackError)时应该使用什么调试策略的问题.
我在使用rspec或黄瓜时看到这些错误
perrys-MacBook-Pro:pc perry_mac$ cucumber
stack level too deep (SystemStackError)
/Users/perry_mac/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:240
perrys-MacBook-Pro:pc perry_mac$ rspec
/Users/perry_mac/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:240: stack level too deep (SystemStackError)
perrys-MacBook-Pro:pc perry_mac$
Run Code Online (Sandbox Code Playgroud)
我怀疑我在这里介绍的问题与rspec和黄瓜无关.我不确定如何缩小问题范围.我接下来应该尝试什么?
我已经尝试过bundle update,运行正常.
该应用运行良好rails s,但我想利用我写的rspec和黄瓜测试.
附录:
我用最简单的测试看到了这一点,例如:
perrys-MacBook-Pro:pc perry_mac$ cat ./spec/controllers/page_controller_spec.rb
require 'spec_helper'
describe PageController do
end
perrys-MacBook-Pro:pc perry_mac$ rspec ./spec/controllers/page_controller_spec.rb
/Users/perry_mac/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:240: stack level too deep (SystemStackError)
perrys-MacBook-Pro:pc perry_mac$
Run Code Online (Sandbox Code Playgroud)
附录2:spec_helper的pastebin在这里:http://pastebin.com/ePdGyHQh
附录3:Gemfile的pastebin在这里:http://pastebin.com/xkLYGjsY
附录4:我已经确定这是spec_helper.rb中导致错误的行
require File.expand_path("../../config/environment", __FILE__)
Run Code Online (Sandbox Code Playgroud)
如果我在该行之前放置了故意的语法错误,我会得到'语法错误'如果我在行之后输入相同的语法错误,我会得到'堆栈太深的错误'.
似乎有些进步.应该require File.expand_path("../../config/environment", __FILE__)写一些其他方式?
附录5:我将此添加到spec_helper.rb:
puts File.path("../../config/environment")
puts __FILE__
require File.expand_path("../../config/environment", __FILE__)
Run Code Online (Sandbox Code Playgroud)
现在看到这个: …
也许我错过了明显的......
我可以轻松地测试网页上是否存在文本.
有没有一种直接的方法来测试div或网页上列出的项目的顺序,比如从上到下?
所以,如果我期待的话
......按顺序显示 是否有可以调用以检查网页内容的匹配器或测试方法?如果显示如下内容,它应该会失败:
有人可以提供故障排除提示吗?:
使用以下与rails相关的命令序列:
rails new test6
bundle install
rails generate Controller Gohere left right up down
rake test
Run Code Online (Sandbox Code Playgroud)
...似乎两次运行rake任务'test'.我哪里出错了?
日志在这里:
perrys-MacBook-Pro:rails_projects perry_mac$ rails new test6
create
create README
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/mailers
create app/models
create app/views/layouts/application.html.erb
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/locales
create config/locales/en.yml
create …Run Code Online (Sandbox Code Playgroud) 如何显示图像,该图像存储在项目目录的外部.
为什么config/database.yml默认包含在.gitignore文件中?这个小项目花了我一两个小时.
我偶然发现了这个麻烦:
不知道为什么.花费我一小时左右的时间摆弄重置和合并选项,当事实证明我甚至没有跟踪文件.在我写这篇文章的时候,我意识到我并不完全确定.gitignore被编写/修改为包含config/database.yml
它有什么理由应该存在吗?
rspec ×5
ruby ×3
rspec-rails ×2
capybara ×1
css ×1
cucumber ×1
debugging ×1
factory-bot ×1
firebug ×1
formatting ×1
git ×1
html ×1
html5 ×1
ide ×1
image ×1
layout ×1
rake ×1
scaffolding ×1
testing ×1
text-editor ×1
unit-testing ×1