小编Joe*_*oel的帖子

Rails模型 - 非持久类成员或属性?

是否有可能/建议将类的成员保留到数据库中以用于rails模型?

我想存储用户在会话变量中选择的最后一种类型.由于我无法从我的模型中设置会话变量,因此我希望将值存储在"虚拟"类成员中,该成员只将值传递回控制器.

你有这样的班级成员吗?

ruby ruby-on-rails

5
推荐指数
1
解决办法
1792
查看次数

如何在内联而不是在页面顶部显示验证错误

我试图让我的用户模型验证错误显示内联其相应的表单字段.我正在使用bootstrap和设计.我有客户端验证,所以它不会让你提交注册表单,直到满足大多数验证.问题是当用户通过omniauth与facebook注册时.Omniauth将采用facebook给我的字段并将其用于用户,但facebook不提供的字段会在页面顶部引发难看的错误.我一直试图找到一种方法让那些内联显示.

这是我的用户模型:

class User < ActiveRecord::Base

    has_many :bills, :dependent => :destroy

    validates :cell_phone, presence: true
    validates :cell_phone, length: { is: 10 }
    validates :cell_phone, :numericality => {:only_integer => true}
    validates :first_name, presence: true
    validates :last_name, presence: true
    validates :terms, presence: true

    geocoded_by :last_sign_in_ip
    after_validation :geocode


    # Include default devise modules. Others available are:
    # :confirmable, :lockable, :timeoutable and :omniauthable
    devise :database_authenticatable, :registerable, :omniauthable,
    :recoverable, :rememberable, :trackable, :validatable



    def ability
    @ability ||= Ability.new(self)
    end

    delegate :can?, :cannot?, :to => :ability



    def …
Run Code Online (Sandbox Code Playgroud)

validation inline ruby-on-rails devise omniauth

4
推荐指数
1
解决办法
7976
查看次数

无法在CentOS上安装Nokogiri,其Ruby版本高于要求

以下是我在CentOS6.5服务器上尝试的内容.我已经更新了Git和Ruby,但仍然无法安装它.第一部分是我尝试将其安装为sudo用户的地方.第二部分是我试图通过root安装它.

谁能提供关于如何解决这个问题的其他想法?我很难找到解决此问题的方法.

第1节:

[user@server gitlab-rails]$ sudo gem install nokogiri -- --use-system-libraries
[sudo] password for user:
Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.6.2.gem (100%)
ERROR:  Error installing nokogiri:
    nokogiri requires Ruby version >= 1.9.2.
[user@server gitlab-rails]$ ruby --version
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
Run Code Online (Sandbox Code Playgroud)

第2节:

[root@server gitlab-rails]# gem install nokogiri -- --use-system-libraries
Building native extensions with: '--use-system-libraries'
This could take a while...
ERROR:  Error installing nokogiri:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb --use-system-libraries
checking if the C …
Run Code Online (Sandbox Code Playgroud)

ruby centos nokogiri gitlab

4
推荐指数
1
解决办法
3081
查看次数

测试功能足够吗?

标题说明了,如果我使用水豚测试:

visit this page
expect this content 
Run Code Online (Sandbox Code Playgroud)

并为每个功能(例如登录,注册,搜索,点击所有链接和按钮等)执行此操作,这样就足够了吗?为什么我需要测试控制器和模型?如果功能按预期工作,这是不是意味着一切都在协调工作?

ruby-on-rails capybara

4
推荐指数
1
解决办法
140
查看次数

I18n.locale重置为:en在控制器和视图之间

我正在尝试使用spree自己的spree_i18ngem 来国际化Rails/Spree应用程序,但我无法让它工作.

我做了一个最小的应用程序,在这里重现了问题.

简而言之,我在ApplicationController中有以下代码:

before_action :set_locale

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
  puts I18n.locale
end
Run Code Online (Sandbox Code Playgroud)

我的视图中的代码应该被翻译(<%= t("whatever") %>).但无论我做什么,文本总是以英文输出.

使用一些额外的调试代码,我可以看到一旦set_locale调用,但执行仍然在控制器内,语言环境是正确的(例如,如果我访问url /?locale=es,那么puts上面的控制器代码输出中的语句es).

但是当执行到达视图时,语言环境已经以某种方式被重置为en.(例如<% raise I18n.locale.to_s %>,在视图中添加会将"en"作为错误消息引发.)

我已经在Spree的Github上打开了一个问题,因为据我所知,我已完全按照他们的指示操作,但仍然没有工作,但我可能仍然遗漏了一些东西.为什么区域设置没有正确设置?

(注意:我应该补充说,Spree.t它不起作用,不仅仅是t.)

编辑:如果你看看我的Github问题的评论,你会看到我的工作.但是,我99%肯定我的解决方案是一个黑客,并且我应该使用更好的方法.赏金可以告诉我什么是我错了.

locale ruby-on-rails internationalization spree rails-i18n

3
推荐指数
1
解决办法
1610
查看次数

JavaScript文字键

如果只有JavaScript字符串和数字可以是对象文字键,有人可以解释为什么这在控制台中有效吗?

var obj = {null: 0, true: 1, false: -1}
> Object {null: 0, true: 1, false: -1}
obj.null
> 0
obj.true
> 1
obj.false
> -1
Run Code Online (Sandbox Code Playgroud)

javascript

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

不使用git将Rails应用程序部署到Heroku?

我正在做Michael Hartl的Ruby on Rails教程,在完成所有章节之后,我在我的本地服务器上运行应用程序并且它有效.每当我尝试在github上推送它时,我都会收到"无需提交,工作目录清理"的消息.现在我想在heroku上部署它.我试过但它没有用.有没有其他方法可以在没有版本控制的情况下部署到heroku?或者我应该从零重新启动我的应用程序?我该如何解决git问题呢?

ruby git deployment ruby-on-rails heroku

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

你如何创建一个Rakefile?

我一直在创建一个Rakefile.方向说创建一个Rakefile文件,可以帮助您自动执行常见任务.它还说要投入:

    require 'rake/testtask'

    Rake::TestTask.new do |t|
      t.libs << "tests"
      t.test_files = FileList['tests/test*.rb']
      t.verbose = true
    end
Run Code Online (Sandbox Code Playgroud)

谢谢

ruby rakefile

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