小编yel*_*ign的帖子

在Rails中与Force_SSL相反?

我正在运行一个Rails 3.1.4应用程序,需要让一些页面使用force_ssl,但其他人我不想拥有SSL.是否与force_ssl相反,如force_http?问题是我有一些页面不需要是SSL,它们包含我无法使用https接收的元素(因此用户从浏览器中获取不安全的错误).

会发生什么事情,当有人进入force_ssl页面时,它工作正常,但是当他们转到其他不是force_ssl的页面时,他们会从浏览器收到不安全的页面错误,因为https仍然存在.因此,我想强制我无法使元素https的页面避免使用SSL(即强制它回到http).

先感谢您.

ssl ruby-on-rails-3

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

在Rails中的单个视图中为模型创建多个记录

我有一个名为的模型Book,我想调整标准Book#new来显示10本书的字段,这样就可以一次创建10个而不是一个.

我查看了这个问题,发现如果我添加10.times到表单中,我可以重复表单.但是,我没有正确执行,因为保存了新记录,但所有字段都为null.

我想做的是:

  1. 允许用户一次最多输入10本书,然后保存
  2. 如果用户仅填充三个书记录,则仅创建三个(并忽略具有空值的其他形式的七个记录)

我的看法:

<%= simple_form_for(@book) do |f| %>
  <%= f.error_notification %>
  <% 10.times do |index|%>
    <%= f.input :title %>
    <%= f.association :book_category %>   
  <% end %>

  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我的控制器与脚手架代码没有变化:

def new
  @book = Book.new
end

def create
  @book = Book.new(params[:book])
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails simple-form

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

Rails 验证字段是否为真(如果存在)

我发现很多关于如何验证字段是否存在(如果另一个条件为真)的帖子,例如:

Rails:仅当值存在时如何验证格式?

Rails - 验证:如果一个条件为真

然而,我该如何反其道而行之呢?

我的用户有一个名为 的属性terms_of_service

我如何最好地编写一个验证来检查terms_of_service == true是否存在?

ruby-on-rails

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

Rails无限循环 - 堆栈级别太深

我遇到了stack level too deep一个无限循环,但我无法弄明白为什么,所以我希望别人能发现它.

我的游戏模型中有这个方法:

def self.record_win_or_tie(game_id)
  game = Game.find(game_id)

  if game.home_team_score > game.away_team_score 
    game.home_team_won = true
    game.save
  end

end
Run Code Online (Sandbox Code Playgroud)

当我从控制台运行条件为真的游戏(即game.home_team_score大于game.away_team_score)时,如果一遍又一遍地运行相同的查询.

SELECT `games`.* FROM `games` WHERE `games`.`id` = 1 LIMIT 1
Run Code Online (Sandbox Code Playgroud)

如果我运行条件为false的game_id的代码,则查找游戏的查询只发生一次并且没有无限循环.

*更新*

我发现问题是我从GameObserver调用方法:

class GameObserver < ActiveRecord::Observer
  def after_save(game)
    Game.record_win_or_tie(game.id)
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何调整我的代码.要求是自动更新或者game.home_team_wongame.away_team_won有人更新后game.home_team_scoregame.away_team_score.

好像我不能用观察者来做这件事.

ruby ruby-on-rails

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

Rails:重新排序ActiveRecord结果集

我想按审核日期检索最后五篇文章,但我想按时间顺序(升序)显示它们.我该怎么做呢?

# controller
@recent_articles = Article.where("reviewed = ?", true).order("review_date DESC").limit(5)

# view
<% @recent_articles.each do |ra| %>
  # articles sorted by review_date in ascending order
<% end %>
Run Code Online (Sandbox Code Playgroud)

我尝试在控制器中执行此操作,但它检索了最旧的五个review_dates(即它只是通过ASC顺序检索记录而不是重新排序已检索的数组):

@recent_articles = Article.where("reviewed = ?", true).order("review_date DESC").limit(5)
@recent_articles = @recent_articles.reorder("review_date ASC")   
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Capistrano损坏Gemfile.lock错误

我正在尝试使用Capistrano部署我的应用程序,但我收到此错误:

Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES
section: 'nokogiri'
Run Code Online (Sandbox Code Playgroud)

我看到这个问题,不幸的是,解决方案(切换Bundler版本)对我不起作用: Travis报告了损坏的Gemfile.lock的奇怪消息

我试过:在添加到我之后删除gemfile.lock(和做一个bundle _1.10.6_ install),但我仍然得到同样的错误.nokogirigemfile

这是我的gemfile:

source 'http://rubygems.org' 

gem 'rails', '4.2.5'
gem 'mysql2', '0.4.2'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails', '4.0.5'
gem 'turbolinks', '2.5.3'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc

gem 'whenever', '0.9.4', :require => false
gem 'simple_form', '3.2.0' 
gem 'devise', '3.5.2' 
gem 'omniauth-facebook', '3.0.0' …
Run Code Online (Sandbox Code Playgroud)

capistrano ruby-on-rails gemfile.lock

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