小编use*_*052的帖子

ActiveRecord'troy'方法在Ruby on Rails中返回一个布尔值?

我正在使用Ruby on Rails 3,我想知道什么类型的返回将具有以下代码:

@user.destroy
Run Code Online (Sandbox Code Playgroud)

我需要这样来处理成功错误的案例,如下所示:

if @user.destroy
  puts "True"
else
  puts "false"
end
Run Code Online (Sandbox Code Playgroud)

可能吗?如果是这样,怎么样?

ruby-on-rails return-type destroy ruby-on-rails-3

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

Rails 3.1:在邮件程序视图文件中显示图像时出现问题

我正在使用Ruby on Rails 3.1,我想将我的网站徽标(即通过新资产管道处理的图像)添加到电子邮件中.

如果在我的邮件程序视图文件中,我说明以下内容:

<% # Note: '@root_url' is my application hostname (eg: http://www.mysite.com) %>
<%= link_to image_tag( "#{@root_url.to_s}/images/logo.png"), @root_url.to_s %>
Run Code Online (Sandbox Code Playgroud)

它不能在生产模式下工作(也就是说,我无法显示徽标图像),因为我认为资产管道使用指纹识别技术,而在收到的电子邮件中却没有.检查电子邮件中的HTML徽标元素我得到如下内容:

<img src="http://www.mysitecom/images/logo.png"> # without Fingerprinting
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?


在我的production.rb文件中,我有以下注释掉的代码:

# Enable serving of images, stylesheets, and javascripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

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

我如何设置'attr_accessible'以便不允许使用Ruby on Rails访问任何模型的字段?

如果在模型文件中我只有这个代码:

class Users < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

这意味着什么?是否可以访问与模型相关的所有属性?

我如何才能设置"attr_accessible" 没有允许访问的任何字段这种模式?

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

16
推荐指数
2
解决办法
4758
查看次数

*(星号)符号在函数参数附近做什么以及如何在其他场景中使用它?

我正在使用Ruby on Rails 3,我想知道*在函数参数附近是否存在运算符,并了解其在其他场景中的用法.

示例场景(此方法来自Ruby on Rails 3框架):

def find(*args)
  return to_a.find { |*block_args| yield(*block_args) } if block_given?

  options = args.extract_options!

  if options.present?
    apply_finder_options(options).find(*args)
  else
    case args.first
    when :first, :last, :all
      send(args.first)
    else
      find_with_ids(*args)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby arguments ruby-on-rails splat ruby-on-rails-3

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

如何删除哈希值为空白的哈希键?

我正在使用Ruby on Rails 3.2.13,我想删除相应哈希值为空的哈希键.也就是说,如果我有以下哈希

{ :a => 0, :b => 1, :c => true, :d => "", :e => "   ", :f => nil }
Run Code Online (Sandbox Code Playgroud)

然后产生的哈希应该是(注意:0并且true不被视为空白)

{ :a => 0, :b => 1, :c => true }
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

ruby hash ruby-on-rails key-value ruby-on-rails-3

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

Ruby on Rails:如何设置"查找"选项以便不使用缓存

在Ruby on Rails中,您可以使用以下语法从数据库中查找记录:

<model_name>.find_by_<field_name>()
Run Code Online (Sandbox Code Playgroud)

例如:User.find_by_email('test@test.test'),User.find_by_id(1),...

前一段时间,如果我没有错,我会在某处读到你可以明确禁用"查找"操作的缓存,但我不记得是怎么回事.

有人可以帮我记住吗?

search caching ruby-on-rails find ruby-on-rails-3

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

如何在Rack中间件中使用cookie?

我正在使用Ruby on Rails 3,我想cookies.signed在Rack中间件中使用该方法.我需要这个,因为我想直接在中间件中验证用户,而不是before_filterapplication_controller.rb文件中使用.

例如,如果我以这种方式在控制器中使用该方法:

cookies.signed[:user_id']
Run Code Online (Sandbox Code Playgroud)

我明白了

--- 
- 1 # This is the id of the current signed in user
- a64ee3asdtjhcc7b35fcb280956be00ba27f94d48dfe4291c06db7d57577d5893 # This is the cookie salt
Run Code Online (Sandbox Code Playgroud)

但如果我在这个方式的Rack中间件(同一个应用程序)中使用它:

request = Rack::Request.new(env)
request.cookies.signed[:user_id']
Run Code Online (Sandbox Code Playgroud)

我明白了

NoMethodError
undefined method `signed' for #<Hash:0x00000103333d40>
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能在中间件中使用该方法呢?如何获取用户ID以便我可以对其进行身份验证?


也许我必须包含\ extend,例如,ActionDispatch ...如果是这样,怎么样?

ruby cookies rack ruby-on-rails ruby-on-rails-3

13
推荐指数
2
解决办法
6997
查看次数

如何禁用电子邮件链接?

我正在使用Ruby on Rails 3,我想在HTML电子邮件中禁用电子邮件地址链接.

例如,如果在电子邮件中我发送了一些原始HTML

Hi, you email is: <br/>
test@email.com
Run Code Online (Sandbox Code Playgroud)

Gmail会自动检测这是一个电子邮件地址并将其更改为

Hi, you email is: <br/>
<a target="_blank" href="mailto:test@email.com">test@email.com</a>
Run Code Online (Sandbox Code Playgroud)

我想有这个输出

# Text without the 'mailto:' link
Hi, you email is:
test@email.com
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

html mailto ruby-on-rails

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

渲染模板传递局部变量的麻烦

我正在运行Ruby on Rails 3,我想渲染一个show.html.erb传递局部变量的template().

RAILS_ROOT/views/users/show.html.erb我有

Name: <%= @user.name %>
Surname: <%= @user.surname %>
Run Code Online (Sandbox Code Playgroud)

我也有一个页面控制器来处理页面中和application_controller.rb的istance @current_user.一个页面被调用user,所以RAILS_ROOT/views/pages/user.html.erb我有

<%= render :template => "users/show", :locals => { :user => @current_user } %>
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用(我得到这个错误RuntimeError in Pages#user, Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id:)但这有效:

<%= render :template => "users/show", :locals => { :user => @user = @current_user } %>
Run Code Online (Sandbox Code Playgroud)

我认为这不是 …

ruby templates rendering ruby-on-rails ruby-on-rails-3

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

如何覆盖'as_json'或'to_json'方法以便'respond_to'而不包含指定的信息?

我正在使用Ruby on Rails 3,我想覆盖(可能在模型文件中)as_jsonto_json方法,以便在respond_to不包含某些信息的情况下进行HTTP请求.

在我的帐户模型中,我有

def as_json(options = {})
  super(
    :except => [
      :password
    ]
  )
end
Run Code Online (Sandbox Code Playgroud)

在我的控制器中我有

format.json {
  render :json => @account, :status => 200
}
Run Code Online (Sandbox Code Playgroud)

例如,当我提出请求时,/account/1.json我还要回到密码属性,出于安全考虑,我不想要.

那么,如何防止包含指定信息?


我能做到这一点并且有效

format.json {
  render :json => @account.to_json(:except => [:password]), :status => 200
}
Run Code Online (Sandbox Code Playgroud)

但我需要重构.

ruby security json ruby-on-rails ruby-on-rails-3

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