javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

您如何在Rails中构造i18n yaml文件?

我开始在Rails中填充一个en yaml文件,我已经知道它会在不久之后变得混乱并且失去控制。 是否有使该文件井井有条的惯例?

到目前为止,我具有以下结构:

language:
  resource:
    pages: # index, show, new, edit
      page html elements: # h1, title
  activerecord:
    attributes:
      model:
        property:

现在,我想将以下内容放入此结构中,但不确定如何:

  1. 导航
  2. 按钮文字(保存更改,创建帐户等)
  3. 来自控制器闪存的错误消息
  4. 如何添加多字键。 我要使用空格还是下划线? 例如,t(".update button"))或t(".update_button")

语言环境文件结构是否有约定?

trans by 2020-01-19T23:22:12Z

Lift框架像Ruby on Rails或Django一样“简单”吗?

只是想知道是否有人对这三个有经验。 我已经使用过一些RoR并使用了Django。 他们似乎很容易使用。 像这两个电梯是“轻松”的吗? 我知道简单是主观的,这里没有上下文。 我的意思是从高度和一般的意义上讲。

trans by 2020-01-19T21:49:14Z

轨道上的红宝石-销毁前验证

我有三个班级:SchooldestroyAdministratorship

学校

has_many :administatorships
has_many :administrators, :through => :administratorships

帐户

has_many :administratorships

行政管理

belongs_to :account
belongs_to :school

before_destroy :confirm_presence_of_alternate_administratorship_in_school

protected

def confirm_presence_of_alternate_administratorship_in_school
    unless school.administrators.count(["administratorships.account_id != #{id}"]) > 0
        errors.add_to_base "The school must have at least one administrator"
    end
end

现在,我想发生的是当我在2709926364743943992321的实例上调用2709926364743943992320时,它给模型增加了一个错误并防止了模型的破坏。 我删除了2709926364743943992322语句,以查看是否阻止了错误的添加,但事实并非如此。 似乎在模型上有错误并不能防止破坏的发生。

所以我的问题是,有什么办法可以防止使用验证发生破坏? 我意识到我可以定义一种仅在满足上述条件时才销毁的方法,但是似乎验证方法是一种更优雅的解决方案。

trans by 2020-01-19T19:25:26Z

轨道生成国防部

我试图按照《 Head First Rails》一书中的说明进行操作,并在第50页上说要创建模型,但无法使用rails命令创建模型。

当我在此提示符下键入此命令时:localhost:〜home $

 rails generate model ad name:string description:text price:decimal seller_id:integer email:string img_url:string

我得到这个:

Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]              # Path to the Ruby binary of your choice
                                 # Default: /Users/home/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
  -b, [--builder=BUILDER]        # Path to a application builder (can be a filesystem path or URL)
  -m, [--template=TEMPLATE]      # Path to an application template (can be a filesystem path or URL)
      [--skip-gemfile]           # Don't create a Gemfile
      [--skip-bundle]            # Don't run bundle install
  -G, [--skip-git]               # Skip Git ignores and keeps
  -O, [--skip-active-record]     # Skip Active Record files
  -S, [--skip-sprockets]         # Skip Sprockets files
  -d, [--database=DATABASE]      # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
                                 # Default: sqlite3
  -j, [--javascript=JAVASCRIPT]  # Preconfigure for selected JavaScript library
                                 # Default: jquery
  -J, [--skip-javascript]        # Skip JavaScript files
      [--dev]                    # Setup the application with Gemfile pointing to your Rails checkout
      [--edge]                   # Setup the application with Gemfile pointing to Rails repository
  -T, [--skip-test-unit]         # Skip Test::Unit files
      [--old-style-hash]         # Force using old style hash (:foo => 'bar') on Ruby >= 1.9

Runtime options:
  -f, [--force]    # Overwrite files that already exist
  -p, [--pretend]  # Run but do not make any changes
  -q, [--quiet]    # Suppress status output
  -s, [--skip]     # Skip files that already exist

Rails options:
  -h, [--help]     # Show this help message and quit
  -v, [--version]  # Show Rails version number and quit

Description:
    The 'rails new' command creates a new Rails application with a default
    directory structure and configuration at the path you specify.

    You can specify extra command-line arguments to be used every time
    'rails new' runs in the .railsrc configuration file in your home directory.

    Note that the arguments specified in the .railsrc file don't affect the
    defaults values shown above in this help message.

Example:
    rails new ~/Code/Ruby/weblog

    This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
    See the README in the newly created application to get going.
localhost:~ home$ 

我正在使用Rails -v 3.2.8和Ruby 1.9.3p125

trans by 2020-01-19T18:45:17Z

ruby on rails-为什么false会使validates_presence_of无效?

好的步骤来重现此内容:

prompt> rails test_app
prompt> cd test_app
prompt> script/generate model event_service published:boolean

然后进入迁移并添加非null并将默认发布为false:

class CreateEventServices < ActiveRecord::Migration
  def self.up
    create_table :event_services do |t|
      t.boolean :published, :null => false, :default => false
      t.timestamps
    end
  end

  def self.down
    drop_table :event_services
  end
end

现在迁移您的更改并运行测试:

prompt>rake db:migrate
prompt>rake

您此时应该不会出错。 现在编辑模型,以便您发布validate_presence_of:

class EventService < ActiveRecord::Base
  validates_presence_of :published
end

现在编辑单元测试event_service_test.rb

require 'test_helper'

class EventServiceTest < ActiveSupport::TestCase
  test "the truth" do
    e = EventService.new
    e.published = false
    assert e.valid?
  end
end

并运行耙:

prompt>rake

您将在测试中得到一个错误。 现在将e.published设置为true并重新运行测试。 有用! 我认为这可能与布尔值字段有关,但我无法弄清楚。 这是Rails中的错误吗? 还是我做错了什么?

trans by 2020-01-19T08:13:52Z

ruby-在Rails应用程序中实现“记住我”

我的Rails应用程序有一个带有“记住我”复选框的登录框。 选中该复选框的用户即使关闭浏览器也应保持登录状态。 我通过将其ID存储在用户的会话中来跟踪用户是否已登录。

但是会话在Rails中作为会话cookie实现,但不是持久性的。 我可以使它们持久化:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

但这似乎是一种骇客,对于如此常见的功能而言令人惊讶。 有什么更好的办法吗?

编辑

Gareth的答案非常好,但是我仍然希望熟悉Rails 2的人提供答案(因为它是唯一的CookieSessionStore)。

trans by 2020-01-19T06:07:46Z

helpers-如何在Rails的控制器中混入和调用link_to?

这似乎是一个菜鸟问题,但简单的答案使我难以理解。 我需要在url_for方法中调用link_to,以吐出HTML链接。 ActionView::Helpers::UrlHelper.link_to调用url_for,但这将调用AV模块的版本而不是控制器的版本。 我设法通过把

  #FIXME there must be a better way to mixin link_to
  alias_method :self_url_for, :url_for
  include ActionView::Helpers::UrlHelper
  alias_method :url_for, :self_url_for

在控制器中。 但是,我仍然不确定为什么它会正常工作。 有人可以解释一下方法的范围和隐藏在这里发生的吗? 有什么更好的方法来混合link_to(或者通常只包含模块中的某些方法),以便在控制器中调用它(用例生成带链接的闪存字符串)。

请没有关于MVC的讲座,如果有的话,link_to应该与url_for分开放置在一个模块中。从噪音的数量来看,很多人遇到了这个看似微不足道的障碍,最终浪费了一个小时来做“ Rails” 方式”,实际上是需要一分钟的破解时间才能使我的应用立即运行。 也许有一种“ Rails方式”可以对助手进行此操作吗? 还是更好的红宝石方式?

trans by 2020-01-19T05:01:36Z

html-不规则的引导程序列换行

使用最新版本的haml,haml-rails,sass和bootstrap-sass运行Rails 4.1.4。 对于用户显示,我的HAML是这样的:

.tutors-listing
    .row
      - @users.each do |tutor|
        .col-xs-12.col-md-3
          .row.tutor
            .col-xs-offset-1.col-xs-4.col-md-12
              = image_tag tutor.photo, :class => 'img-responsive img-circle tutor-photo'
              %h4.tutor-name
                = tutor.first_name

             %p
                teaches
             %strong.tutor-skills
               = tutor.teachables

但是,此标记导致以下故障:Irregular column wrapping More irregular column wrapping

我希望有人能知道这里出了什么问题。 在中等的断点处,应平均分配4列。

trans by 2020-01-19T03:59:32Z

Rails 5,Rspec:在方案中找不到环境数据

将Rails应用程序升级到Rails 5后,运行RSpec测试会给我以下错误:

rails aborted!
ActiveRecord::NoEnvironmentInSchemaError: 

Environment data not found in the schema. To resolve this issue, run: 

    bin/rails db:environment:set RAILS_ENV=test

但是,那个bin不存在,我似乎无法用bundle binstubs railsrake rails:update:bin生成它。

我也尝试过:

rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test

Github上有一个相关的问题。

我该如何解决这个错误?

trans by 2020-01-18T16:29:16Z

ruby on rails-如何通过迁移向现有索引添加`unique`约束

如何在Rails数据库中已存在的索引中添加unique: true约束?

我试图通过

  def change
    add_index :editabilities, [:user_id, :list_id], unique: true
  end

但是迁移失败,并显示如下错误。

表上的索引名称“ index_editabilities_on_user_id_and_list_id”   “编辑能力”已经存在

我正在使用rails4和postgresql。

trans by 2020-01-18T10:26:18Z

Rails.cache.clear和rake tmp:cache:clear有什么区别?

这两个命令是否等效? 如果没有,有什么区别?

trans by 2020-01-18T09:50:24Z

ruby on rails-管理由Git操作创建的schema.rb中的冲突

我创建了一个迁移,运行rake db:migrate,该迁移使我的db / schema.rb版本号增加了。 然后我做了一个git fetch origin master,发现我的团队成员有所变化。 因此,我执行了git stashgit rebase FETCH_HEAD,然后执行了git stash pop。这导致db / schema.rb中的版本号发生冲突。

Upstream>>>
ActiveRecord::Schema.define(:version => 20110930179257) do
===========
ActiveRecord::Schema.define(:version => 20110930161932) do
<<<Stashed

我认为适当的解决方法是手动将版本号增加到高于上游的版本号。

这是明智的还是坏消息?

谢谢,最高

trans by 2020-01-18T05:44:21Z

ruby-在rails 5.1及更高版本中,代替“ render:text”(和“ render none:true”)使用什么?

Rails 5.1消除了以前不推荐使用的方法的全部负担。 其中有老朋友render :text

当您需要渲染一些文本,但又不想增加视图模板的开销时,它非常有用。 例子:

render text: "ok"
render text: t('business_rules.project_access_denied'), status: 401

用什么代替呢?

trans by 2020-01-18T05:19:29Z

rspec-如何更改默认的“ www.example.com”域以在Rails中进行测试?

我有一个Rails应用程序,该应用程序的行为取决于访问它的域(例如,www.myapp.com将与user.myapp.com进行不同的调用)。 在生产中使用时,一切正常,但是我的测试代码始终会看到一个主机名“ www.example.com”。

有没有一种干净的方法让测试指定它要假装访问的主机名?

trans by 2020-01-18T02:52:05Z

ruby-在Rails中使用attr_accessor

您何时在Rails模型中使用attr_reader/attr_writer/attr_accessor

trans by 2020-01-18T01:39:27Z

红宝石中的增量变量

这个问题已经在这里有了答案:

  • Ruby为什么不支持i ++或i--(增减运算符)?                                     9个答案

在Java中,类似i++的内容会将i的值增加1。

我该如何在Ruby中进行操作? 当然有比i = i + 1更好的方法了吗?

trans by 2020-01-17T21:43:30Z

模型-Rails after_initialize仅在“ new”上

我有以下两种型号

class Sport < ActiveRecord::Base
  has_many :charts, order: "sortWeight ASC"
  has_one :product, :as => :productable
  accepts_nested_attributes_for :product, :allow_destroy => true
end

class Product < ActiveRecord::Base
  belongs_to :category
  belongs_to :productable, :polymorphic => true
end

没有产品就不可能存在一项运动,因此在我的after_initialize中,我拥有:

def new
  @sport = Sport.new
  @sport.product = Product.new
...
end

我尝试使用after_initialize将产品的创建移至运动模型:

after_initialize :create_product

def create_product
 self.product = Product.new
end

我很快了解到,每当实例化模型时(即从product调用)都会调用sport。 所以那不是我想要的行为。

我应该如何对所有sport都具有product的需求进行建模?

谢谢

trans by 2020-01-17T02:04:28Z

ruby on rails-git push heroku master权限被拒绝

我正在关注ruby.railstutorial。 我运行命令“ git push heroku master”,它吐出此错误。

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我在我的Rails应用程序“ / Users / lexi87 / rails_projects / first_app”中。 有什么办法吗?

trans by 2020-01-16T15:37:38Z

http-Rails:返回401吗?

我想将HTTP 401错误作为我的permission_denied方法的一部分返回,以进行declarative_authorization。

# triggered when a user accesses a page that they don't have access to
def permission_denied
  # render my default 401 error page?
end

我该怎么做? (请原谅这个问题是否愚蠢……我知道如何在公共目录中呈现401.html页面,但是我不认为它会返回401 HTTP标头,这就是我的要求。)

trans by 2020-01-15T18:18:19Z

ruby on rails-ActiveRecord :: Base:Class的未定义方法raise_in_transactional_callbacks ='(NoMethodError)

在写这个问题之前,我查看了这些答案,但是找不到解决方法。

执行Rails生成支架时出错用户名:字符串电子邮件:字符串

耙子流产了! ActiveRecord :: Base:Class的未定义方法'migration_error ='

启动Rails服务器时出错:未定义的方法'configure'


当我尝试启动一个新应用程序(针对Hartl的教程,第2章)时,在脚手架启动阶段,出现如下错误:

**undefined method `configure' for #<SampleApp2::Application:0x00000101a74610> (NoMethodError)**

但是由于上面的示例,我编辑了development.rb文件:

DemoApp::Application.configure do

(是的,我的应用程序名为demo_app,所以我改变了它的名称)。

之后,我尝试再次运行脚手架,但出现了新错误:

**method_missing': undefined method raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)**

针对类似情况,指示了一种迁移方法-应将其从文件development.rb中删除。 同样,我试图在此文件中找到raise_in_transactional_callbacks方法,但它不存在!另外,我会说在cmd中产生的完整代码非常大:

C:\Sites\demo_app>rails generate scaffold User name:string email:string
invoke  active_record
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:166:in `block (3 levels) in <class:Railtie>'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `each'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `block (2 levels) in <class:Railtie>'
…
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.2/lib/rails/commands.rb:48:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'

...(省略号)-特别剪切类似的代码。就这样。 我将不胜感激!

trans by 2020-01-15T15:50:34Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共103页