尝试在OSX 10.6上安装新的Rails 3版本.
自购买以来,从未在这台机器上接触过Ruby或Rails.
我能够获得rvm并获得Ruby 1.9.2.安装.从那里,我被卡住了.
我试过了:
rvmsudo gem install rails -v 3.0.0
sudo gem install rails --pre
sudo gem install rails
sudo gem update rails
Run Code Online (Sandbox Code Playgroud)
每次我得到相同的结果错误:
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - /Users/kevin/.rvm/gems/ruby-1.9.2-head@rails3/cache/activesupport-3.0.0.gem
Run Code Online (Sandbox Code Playgroud)
如果我做宝石清单,它说LOCAL GEMS并没有列出任何东西.
我已经阅读了一些演练,但老实说,他们都没有解决这个问题,这让我感到很生气.为什么这么难安装?如果有人可以帮助我让它运行,我很乐意学习它.
我试图遵循这个:
http://eddorre.com/posts/installing-rails-3-beta-4-using-rvm
还有这个:
http://hivelogic.com/articles/compiling-ruby-rubygems-and-rails-on-snow-leopard
这实际上是从ROR指南网站链接的.我错过了依赖吗?我如何让他们进去?
如果我这样做,rails -v我得到:
rails -v
/Library/Ruby/Site/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /Library/Ruby/Site/1.8/rubygems.rb:214:in `activate'
from /Library/Ruby/Site/1.8/rubygems.rb:1082:in `gem'
from /usr/bin/rails:18
Run Code Online (Sandbox Code Playgroud) 我在我新生成的Rails 3.1应用程序中使用了Yahoo的reset.css.给出以下app结构:
- myapp
- app
- assets
- stylesheets
- application.css
- ...
- vendor
- assets
- stylesheets
- yahoo
- reset.css
- fonts.css
Run Code Online (Sandbox Code Playgroud)
包含reset.css文件在我application.css使用require_directory指令后面的结尾require_tree argument must be a directory.
/*
*= require_directory ./yahoo
*/
Run Code Online (Sandbox Code Playgroud)
我有什么问题或者这是与Sprockets相关的错误吗?因为将reset.css文件移动到app/assets像魅力一样的工作.
(顺便说一句,在我的Rails 3.0应用程序中使用自定义Sprockets环境也遇到了问题.)
"action"是否被禁止作为输入字段名称?因为除了"动作"参数的赋值之外,一切都有效.
我有Xcode 4.1预览5工作正常,但决定通过App商店升级到最终的xcode 4.1.我首先卸载了Xcode ...
sudo /Developer/Library/uninstall-devtools –mode=all
Run Code Online (Sandbox Code Playgroud)
然后通过应用商店安装Xcode并重新启动.
我也完全删除了RVM,但是......现在每当我尝试安装Ruby版本时它都会失败.在错误文件中我得到这个:
[2011-07-27 18:29:25] ./configure --prefix="/Users/holden/.rvm/usr"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... config/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... no
checking for gcc... /usr/bin/gcc-4.2
checking whether the C compiler works... no
configure: error: in `/Users/holden/.rvm/src/yaml-0.1.4':
configure: error: C compiler cannot create executables …Run Code Online (Sandbox Code Playgroud) 是否有设置的配置变量,或其他一些方式让Rails ActiveSupport::TestCase显示多个跟踪线?否则很难调试.
例:
ERROR test_something (0.73s)
SystemStackError: stack level too deep
/Users/mario/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:153
Run Code Online (Sandbox Code Playgroud) 我目前正在为网络构建Markdown编辑器.通过Range接口附加HTML等效项,实时预览Markdown标记.使用以下代码,该代码应根据MDN工作:
var range = document.createRange()
var selection = window.getSelection()
range.setStart(textNode, start)
range.setEnd(textNode, end + 2)
surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)
var cursorRange = document.createRange()
cursorRange.setStartAfter(surroundingElement)
selection.removeAllRanges()
selection.addRange(cursorRange)
Run Code Online (Sandbox Code Playgroud)
Firefox的工作原理:一些粗体文字
http://f.cl.ly/items/093R343i23402K190k1t/firefox.gif
Chrome不是:一些粗体文字

有什么建议可能是错的吗?有关此主题的信息很少见.
感谢@Tim Down,我使用他在回答中提到的一个链接中描述的隐形字符解决方法修复了它.这是我现在使用的代码:
var range = document.createRange()
range.setStart(textNode, start)
range.setEnd(textNode, end + 2)
surroundingElement = document.createElement('strong')
range.surroundContents(surroundingElement)
var selection = window.getSelection()
var cursorRange = document.createRange()
var emptyElement = document.createTextNode('\u200B')
element[0].appendChild(emptyElement)
cursorRange.setStartAfter(emptyElement)
selection.removeAllRanges()
selection.addRange(cursorRange)
Run Code Online (Sandbox Code Playgroud) 我已经学习Rails几个月了,最近意识到如果存在一些Rails应用程序部分的视觉"地图"会很方便.不仅仅是MVC部件,还有更多的核位,例如部分,规格等.这可以说明为几个流程,例如当页面加载和运行测试时.
有这样的事吗?
我有一个小的Sinatra应用程序,包括这个模块:
module Sprockets
module Helpers
def asset_path(source)
"/assets/#{Environment.instance.find_asset(source).digest_path}"
end
def sprockets
Environment.instance.call(env)
end
end
class << self
def precompile
dir = 'public/assets'
FileUtils.rm_rf(dir, secure: true)
::Sprockets::StaticCompiler.new(Environment.instance, 'public/assets', [/\.(png|jpg)$/, /^(application|ie)\.(css|js)$/]).compile
end
end
class Environment < ::Sprockets::Environment
include Singleton
def initialize
super
%w[app lib vendor].each do |dir|
%w[images javascripts stylesheets].each do |type|
path = File.join(root, dir, 'assets', type)
append_path(path) if File.exist?(path)
end
end
js_compressor = Uglifier.new
css_compressor = YUI::CssCompressor.new
context_class.instance_eval do
include Helpers
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
并定义了以下路线:
get('/assets/*') do
sprockets # …Run Code Online (Sandbox Code Playgroud) 我目前正在构建一个由Rails/rails-api支持的JSON API.我有一个路由接受通过PATCH请求发送的JSON和一个需要访问原始请求/ JSON的过滤器.
出于测试目的,我在过滤前添加了以下内容以显示我的问题
before_filter do
puts "Raw Post: #{request.raw_post.inspect}"
puts "Params: #{params.inspect}"
end
Run Code Online (Sandbox Code Playgroud)
以下curl请求按预期工作:
curl -X PATCH -H "Content-Type: application/json" -d '{"key":"value"}' http://localhost:3000/update
# Raw Post: "{\"key\":\"value\"}"
# Params: {"key"=>"value", "action"=>"update", "controller"=>"posts"}
Run Code Online (Sandbox Code Playgroud)
但是,我无法测试此方法,以下调用都不起作用:
包括参数,但不是JSON转移
test 'passing hash' do
patch :update, { key: "value" }
end
# Raw Post: "key=value"
# Params: {"key"=>"value", "controller"=>"posts", "action"=>"update"}
Run Code Online (Sandbox Code Playgroud)包括参数,但同样不是JSON转移
test 'passing hash, setting the format' do
patch :update, { key: "value" }, format: :json
end
# Raw Post: "key=value"
# Params: …Run Code Online (Sandbox Code Playgroud)json ruby-on-rails functional-testing rails-api ruby-on-rails-4
我需要帮助我的ActiveRecord模型.我有使用内置上下文选项进行验证的基于上下文的验证(mis):
validates :foo, :on => :bar, :presence => true
model = Model.new
model.foo = nil
model.valid? # => true
model.save # works as expected
model.valid?(:bar) # => false
model.save(:context => :bar) # fails and returns false
Run Code Online (Sandbox Code Playgroud)
但是在a中使用我的模型accepts_nested_attributes_for :model并且调用parent.save失败(验证被调用并返回false),任何建议或解决方案?
仍然没有答案?要解释我的问题的更多信息:我有一个叫做Form多个Fields 的模型.用户应该在提交时看到验证错误,但无论如何都应该保存表单(有和没有错误).有不同类型的Fields,每个都具有全局验证(以确保数据库一致性)和它自己的特定用户定义验证(以验证用户输入的数据).所以我Field看起来像那样:
# Global validations, to ensure database consistency
# If this validations fail, the record should not be saved!
validates_associated :form, :on => :global
...
# Specific user-defined validations …Run Code Online (Sandbox Code Playgroud) 我使用以下规格与MiniTest::Spec和Capybara:
find_field('Email').must_have_css('[autofocus]')
Run Code Online (Sandbox Code Playgroud)
检查名为"电子邮件"的字段是否具有该autofocus属性.该文件说:
has_css?(path,options = {})
检查给定的CSS选择器是否在页面或当前节点上.
据我所知,字段'电子邮件'是一个节点,所以调用must_have_css肯定是有效的!我做错了什么?
目前在我的spec/decorators/product_decorator_spec.rb中,我有以下内容:
require 'spec_helper'
describe ProductDecorator do
let(:product) { FactoryGirl.create(:product) }
subject do
ProductDecorator.first
end
before do
product
end
it 'should render the name attribute with a link to the product page' do
subject.name.should == h.link_to(product.name, 'test')
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行我的规范时,我得到以下内容:
F.....
Failures:
1) ProductDecorator should render the name attribute with a link to the product page
Failure/Error: subject.name.should == h.link_to(product.name, 'resr')
NameError:
undefined local variable or method `h' for #<RSpec::Core::ExampleGroup::Nested_2:0x007fbbf212c8b0>
# ./spec/decorators/product_decorator_spec.rb:15:in `block (2 levels) in <top (required)>'
Finished in 0.98531 …Run Code Online (Sandbox Code Playgroud) 有没有办法控制表单中的*submit_tag*以调用默认的"更新"操作的不同操作?
我尝试使用下面的submit_tag,但它仍然将我重定向到人员控制器中的"更新"操作.
<%= submit_tag "Save", :controller => "people", :action => "set_password", :method => "put" %>
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是,我有两个Person类的更新表单,一个用于更新基本信息,另一个用于更新密码.我想以不同的方式处理表单.对于"更新密码表单",我需要额外的东西.*如果出现错误,请验证其他用户输入(当前密码)*直接到"更新密码"表单
我做错了吗?或者我应该区分"更新"方法中的案例?