小编Gau*_*rma的帖子

为什么Bundle Install是在vendor/bundle中安装gem?

每当我做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)

ruby gem ruby-on-rails bundler rvm

57
推荐指数
4
解决办法
4万
查看次数

Ruby Style:如何检查嵌套的哈希元素是否存在

考虑存储在哈希中的"人".两个例子是:

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)

那么,你如何检查哈希的结构,特别是如果它被深深嵌套(甚至比这里提供的例子更深)?也许更好的问题是:这样做的"红宝石方式"是什么?

ruby hash coding-style

56
推荐指数
3
解决办法
4万
查看次数

如何选择f.select导轨

这是我的代码:

<%= 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)

为什么.....@@?

select ruby-on-rails selected option

18
推荐指数
2
解决办法
3万
查看次数

Rails 3:处理ActiveRecord :: RecordNotUnique异常

如何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)

ruby-on-rails ruby-on-rails-3

15
推荐指数
1
解决办法
2万
查看次数

从Array中删除并返回Ruby中已删除的元素

如何从数组中删除一些元素并选择它们?

例如:

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

ruby arrays select

14
推荐指数
1
解决办法
6554
查看次数

Rails:无法通过Facebook验证您,因为"凭据无效"

我使用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)

facebook omniauth ruby-on-rails-3.2

11
推荐指数
2
解决办法
1万
查看次数

使用Rails 3和Heroku Net发送电子邮件:: SMTPSyntaxError:501语法错误

正如标题所说,我正在尝试使用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)

email-integration heroku ruby-on-rails-3

10
推荐指数
2
解决办法
7117
查看次数

Rails应该在幕后运行时大声发布它的语法?

请参阅更新:底部的答案

原始问题:

<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将发布为错误.

firebug ruby-on-rails ruby-on-rails-3

8
推荐指数
1
解决办法
407
查看次数

使用Ruby on Rails制作sitemap.xml 4

我正在尝试为我的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)

ruby sitemap ruby-on-rails heroku ruby-on-rails-4

8
推荐指数
1
解决办法
4810
查看次数

如何将javascript文件设置为:rails 4中的默认值?

我当前使用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)

javascript ruby gem ruby-on-rails-3 ruby-on-rails-4

7
推荐指数
1
解决办法
2568
查看次数