每当我做bundle install所有的宝石安装在
app_dir/vendor/bundle
Run Code Online (Sandbox Code Playgroud)
路径并消耗大量磁盘空间.我也尝试安装宝石,它应该安装,即宝石集,而开发由此:
bundle install --no-deployement
Run Code Online (Sandbox Code Playgroud)
但这对我来说并不适合安装宝石vendor/bundle.如何让它全局安装在所有应用程序或ruby gemsets位置?我也试过删除.bundle/config但没有改变.
我在用:
rvm version: 1.23.14
ruby version: 2.0.0-p247
rails 3.2.13
Run Code Online (Sandbox Code Playgroud)
这是我的~/.bash_profile:
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
Run Code Online (Sandbox Code Playgroud)
我的~/.bashrc:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)
您可能需要的其他一些信息:
aman@Amandeeps-MacBook-Pro …Run Code Online (Sandbox Code Playgroud) 考虑存储在哈希中的"人".两个例子是:
fred = {:person => {:name => "Fred", :spouse => "Wilma", :children => {:child => {:name => "Pebbles"}}}}
slate = {:person => {:name => "Mr. Slate", :spouse => "Mrs. Slate"}}
Run Code Online (Sandbox Code Playgroud)
如果"人"没有任何子女,则"儿童"元素不存在.所以,对于Slate先生,我们可以检查他是否有父母:
slate_has_children = !slate[:person][:children].nil?
Run Code Online (Sandbox Code Playgroud)
那么,如果我们不知道"slate"是一个"人"哈希呢?考虑:
dino = {:pet => {:name => "Dino"}}
Run Code Online (Sandbox Code Playgroud)
我们不能再轻易检查孩子了:
dino_has_children = !dino[:person][:children].nil?
NoMethodError: undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
那么,你如何检查哈希的结构,特别是如果它被深深嵌套(甚至比这里提供的例子更深)?也许更好的问题是:这样做的"红宝石方式"是什么?
这是我的代码:
<%= f.select :area, options_for_select([['a','a'],['b','b'],['c','c']]), {}, {:class => 'span3 controls controls-row'}, :selected => params[:area] %>
Run Code Online (Sandbox Code Playgroud)
结果是:
ArgumentError in Users#edit
Showing /home/airson/rails_projects/friends_of_local/app/views/users/edit.html.erb where line #17 raised:
wrong number of arguments (5 for 4)
Run Code Online (Sandbox Code Playgroud)
为什么.....@@?
如何ActiveRecord::RecordNotUnique在控制器中处理异常?谢谢
编辑:我在生成唯一代码时遇到异常.我可以在application_controller.rb中处理异常,但我真正想要的是再次生成代码并且必须在控制器中完成.
generate_code
@couponcode = Couponcode.new(:user_id => current_user.id, :code => @code)
Run Code Online (Sandbox Code Playgroud)
编辑2:
generate_code
begin
@couponcode = Couponcode.new(:user_id => current_user.id, :code => @code)
rescue ActiveRecord::RecordNotUnique
#generate_code
@code = "111-11111"
@couponcode = Couponcode.new(:user_id => current_user.id, :code => @code)
end
Run Code Online (Sandbox Code Playgroud) 如何从数组中删除一些元素并选择它们?
例如:
class Foo
def initialize
@a = [1,2,3,4,5,6,7,8,9]
end
def get_a
return @a
end
end
foo = Foo.new
b = foo.get_a.sth{ |e| e < 4 }
p b # => [1,2,3]
p foo.get_a # => [4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
我可以用什么而不是foo.get_a.sth?
我使用https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview整合了omniauth-facebook .但我得到的错误是:
Could not authenticate you from Facebook because "Invalid credentials".
Run Code Online (Sandbox Code Playgroud)
在日志中,得到这个:
Authentication failure! invalid_credentials: OAuth2::Error, : {"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Run Code Online (Sandbox Code Playgroud)
我已经安装好了.当我点击Facebook登录链接时,它回来设计标志"www.mealnut.com/user/sign_in# = "并给出上述错误.我在https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview上检查了"无效凭证"的解决方案,如上所述,我的应用程序是App Type = Web的标题集.不明白为什么它不起作用.
我的应用程序正在等待来自Facebook的评论.但我不认为这与此错误有关.以下是我为omniauth-facebook所做的事情:
Gemfile包含:
gem "omniauth", "~> 1.1.4"
gem 'omniauth-facebook', '1.4.1'
Run Code Online (Sandbox Code Playgroud)
在用户模型中,添加:
devise :omniauthable, :omniauth_providers => [:facebook]
attr_accessible :provider, :uid
def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
unless user
user = User.create(name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.info.email,
password:Devise.friendly_token[0,20]
)
end
user
end
Run Code Online (Sandbox Code Playgroud)
devise.rb
require "omniauth-facebook"
config.omniauth :facebook, …Run Code Online (Sandbox Code Playgroud) 正如标题所说,我正在尝试使用Heroku和Rails 3进行简单的电子邮件.我正在使用这个Heroku指南:http: //devcenter.heroku.com/articles/smtp
这是我的代码:
我生成了一个看起来像这样的邮件:
class Invite < ActionMailer::Base
def signup_notification(user)
recipients "#{user.first_name} <#{user.email}>"
from "Test"
subject "Please activate your new account"
sent_on Time.now
body :var => 'testing'
end
end
Run Code Online (Sandbox Code Playgroud)
我有一个观点 app/views/invite/signup_notification.rhtml
更新:我看到这.rhtml不适用于Rails 3所以我只是尝试.html.erb但我得到了相同的错误.
Your account has been created.
Username:
Password:
Visit this url to activate your account:
Run Code Online (Sandbox Code Playgroud)
然后在Heroku控制台中我这样做了:
user = User.new(:first_name => 'Me', :email => 'me@hotmail.com', :login => 'me', :password => '1234')
Run Code Online (Sandbox Code Playgroud)
然后这个:
Invite.deliver_signup_notification(user)
Run Code Online (Sandbox Code Playgroud)
如果得到这个错误:
Net::SMTPSyntaxError: 501 Syntax error
/user/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:930:in …Run Code Online (Sandbox Code Playgroud) 请参阅更新:底部的答案
原始问题:
<script></script>我的页面中有一个,当它运行时它确实: -
<% Route.all.each do |route| %>
var long = "<%= route.longitude %>";
var lati = "<%= route.latitude %>";
var title = "Route <%= route.route_number %> Stop <%= route.stop_number %>";
var id = "<%= route.id %>";
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是Firebug我在控制台中遇到了这个错误.
SyntaxError: syntax error
[Break On This Error]
<% Route.all.each do |route| %>
^
Run Code Online (Sandbox Code Playgroud)
更新:原来是一个firebug问题,按预期工作,但firebug将发布为错误.
我正在尝试为我的Ruby on Rails 4应用程序制作一个站点地图.我会使用像这样的dynamic_sitemaps的gem,但是我不能和Heroku一起使用所以我环顾四周找到了这个教程:http://meghagulati.com/2013/12/05/sitemap-xml-on-heroku-with- ruby-on-rails /制作我自己的(稍加更改)但是当我访问myapp.com/sitemap.xml时我收到此错误,希望有人可以帮我找到错误.
ActionController::UnknownFormat in SitemapsController#index
ActionController::UnknownFormat Extracted source (around line #7): respond_to do |format|
#app/controllers/sitemaps_controller.rb
class SitemapsController < ApplicationController
def index
@static_pages = [root_url]
@movies = Movie.all
respond_to do |format|
format.xml
end
@series = Series.all
respond_to do |format|
format.xml
end
end
end
#app/views/sitemaps/index.xml.builder
base_url = "http://#{request.host_with_port}"
xml.instruct! :xml, :version=>'1.0'
xml.tag! 'urlset', 'xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
xml.url{
xml.loc("http://myapp.com")
xml.changefreq("weekly")
xml.priority(1.0)
}
xml.url{
xml.loc("http://myapp.com/movies")
xml.changefreq("daily")
xml.priority(0.9)
}
xml.url{ …Run Code Online (Sandbox Code Playgroud) 我当前使用rails 3.2.10的RoR应用程序,我想在rails 4.0.0上升级它.
我解决了gem依赖,但是当我运行rails服务器时,它会给出错误: -
undefined method `[]=' for nil:NilClass
config/application.rb:39:in `<class:Application>'
Run Code Online (Sandbox Code Playgroud)
我的config/application.rb文件在第39行有此代码.
#JavaScript files you want as :defaults (application.js is always included).
config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
Run Code Online (Sandbox Code Playgroud)
应该做什么 - 改变代码或删除,任何依赖或任何其他选项.
Rails 4还支持资源预编译,所以我评论这一行: -
#config.assets.enabled = true In rails 4 assets pipline enable by default
Run Code Online (Sandbox Code Playgroud)