小编rom*_*man的帖子

轨道控制器的速率限制

我正在为我的rails 3应用程序搜索速率限制引擎.我发现了一些,但这不是我需要的.我找到了机架式油门宝石和curbit宝石.似乎rack-throttle适用于rails应用程序的每个请求,但我需要将请求仅限制为一个操作.Curbit最近两年前更新过.谁能告诉我任何其他可以使用的限速引擎?请注意,它应该与缓存一起使用.

gem ruby-on-rails rate-limiting

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

从路由错误轨道3.1救援

如何从RoutingErrorrails 3.1应用程序中解救.如果我错了,可以rescue_from RoutingError在应用程序控制器中使用,但现在不可能.

ruby ruby-on-rails actioncontroller

7
推荐指数
2
解决办法
4545
查看次数

内联中的Rails附件未在gmail中正确显示

有谁能指出我的问题?

我在rails 3.1应用程序邮件程序中使用内联附件.该信还包含存储在amazon w3服务器上的图像.

问题是gmail没有正确显示字母.我在信中有内联附件.但Gmail会将这些文件显示为附加文件.这封信还包含一个附加的html页面,其中包含字母本身.所有gmail显示都是一组符号,我想这是一个附加图像的base64版本.

查看截图.

由于缺乏必要的评级,我无法发布图片,所以我在这里发布.

这是我的邮件中的代码:

attachments.inline['blank'] = File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}")
attachments.inline['discount-deal-triangle'] = File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}")
mail(:to => @subscriber.email, :subject => subject)
Run Code Online (Sandbox Code Playgroud)

以下是视图文件中的代码:

-if @image_url
  = image_tag( attachments['offer_image'].url, :id => 'offer_image', :width => "320", :height => "320")
-elsif @offer.image.nil?
  = image_tag( attachments['blank'].url, :id => 'offer_image', :width => "320", :height => "320")
Run Code Online (Sandbox Code Playgroud)

我省略了细节以使其更简单.

我究竟做错了什么?

ruby gmail ruby-on-rails actionmailer

6
推荐指数
2
解决办法
6414
查看次数

验证失败时设计自定义消息

我在我的应用程序中使用devise作为身份验证引擎.设计验证失败时,有没有办法使用自定义消息.当密码为空时,Devise为我提供以下消息:Password can't be blank但我需要另一条消息.我该怎么做?

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

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

jQuery-autocomplete滚动问题

我在我的应用程序中使用rails3-jquery-autocomplete.我遇到了以下问题:如果您在输入字段中输入内容以便显示自动填充数据并在此之后滚动页面,则自动填充数据框不会随页面滚动.它保持在同一个位置.

你可以看看我在这里面对的是什么.请注意,此示例不是由我创建的,因此我不确定此处是否使用了相同的jquery插件.然而问题是完全一样的.

javascript jquery autocomplete ruby-on-rails jquery-autocomplete

6
推荐指数
2
解决办法
5447
查看次数

在rails应用程序中限制POST请求

rack-throttle在rails 3应用程序中用作速率限制引擎.我已经基于Rack::Throttle::Interval定义自定义速率限制逻辑创建了自己的类.我正在检查请求是否是针对确切的控制器和确切的操作.如果我提出GET请求,这很好.但是如果我发送POST请求我会遇到一些问题.

class CustomLimiter < Rack::Throttle::Interval
  def allowed?(request)
    path_info = Rails.application.routes.recognize_path request.url rescue path_info = {} 
    if path_info[:controller] == "some_controller" and path_info[:action] == "some_action"
      super
    else
      true
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的控制器动作

def question
  #user is redirected here
end

def check_answer
  #some logic to check answer
  redirect_to question_path
end
Run Code Online (Sandbox Code Playgroud)

我的路线

get "questions" => "application#question", :as => "question"
post "check_answer" => "application#check_answer", :as => "check_answer"
Run Code Online (Sandbox Code Playgroud)

编辑:

问题是POST请求即将到来,以便allowed?调用方法.但是当我打电话给Rails.application.routes.recognize_path我时,我得到一个Route …

ruby rack throttling ruby-on-rails rate-limiting

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

从Ruby on Rails应用程序中的串行端口读取挂起

我正在使用serialport gem从我的Ruby on Rails 3.2应用程序中的串口读取.串行端口本身用于从Arduino板写入数据.宝石被添加到Gemfile.端口初始化为application.rb:

config.serial_port = SerialPort.new "/devttyACM0", 9600
config.serial_port.read_timeout = 100
Run Code Online (Sandbox Code Playgroud)

当我尝试从此端口读取时出现问题.

@sp = ProjectName::Application::config.serial_port
@sp.read
Run Code Online (Sandbox Code Playgroud)

该应用程序挂起致命.我试图从一个pry会话中执行阅读,一切都很好.如果我设置read_timeout0,从阅读pry也挂起.我已经尝试设置read_timeout更大的值而没有结果.我该怎么做才能让它发挥作用?

更新:

我试图使用sinatra 框架执行相同的操作.它也挂了.

require "sinatra"
require "serialport"

get '/' do
  read_data
end

helpers do
  def read_data
    sp = SerialPort.new "/dev/ttyACM0", 9600
    sp.read_timeout = 1500
    t = sp.read.match(/\d+(\n|\r)+/)[0].gsub!(/(\n|\r)*/,"") rescue nil
    sp.close
    t
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby serial-port ruby-on-rails arduino ruby-on-rails-3

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

ActiveAdmin过滤器布尔值作为单个复选框

如何使用单个复选框过滤布尔值?

例如,以下给出了两个带有yesno值的复选框:

ActiveAdmin.register User do    
  filter :is_retired, :as => :check_boxes
end
Run Code Online (Sandbox Code Playgroud)

HBTM关联按以下方式过滤:

filter :roles_id, :as => :check_boxes, :collection => proc { Role.all }
Run Code Online (Sandbox Code Playgroud)

但是我的User模型中有一个布尔字段,并且需要一个带有Is retired标签的复选框。有可能吗?

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

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

Rails:从嵌套哈希中的表单中包装参数

我有以下搜索表格,也应该执行过滤:

<%= form_tag search_index_path, method: :get, id: 'search_form' do %>
  <%= text_field_tag :search, params[:search] %>
  <%= check_box_tag 'filter param', 'yes', true %>
  <%= submit_tag "Search", name: nil, class: 'btn' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我现在要做的是在嵌套哈希中包装过滤参数,以便我在params中有如下内容:{"utf8"=>"?", "search"=>"term", "action"=>"index", "controller"=>"search", "filter" => {"field" => "value"}}.请注意,过滤器参数是嵌套的

我找不到使用标准rails表单助手的方法.有没有办法做到这一点?

html ruby forms ruby-on-rails

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

Restangular:错误:未知提供者:RestangularProvider < - Restangular

我正在尝试restangular用作rails rest api的适配器,但我不能让它正常工作.我已经下载了最新版本并将文件放在vendor/assets/javascripts文件夹中.但是一旦我尝试加载应用程序,我会收到以下错误:

Error: Unknown provider: RestangularProvider <- Restangular
    at Error (<anonymous>)
    at http://0.0.0.0:3000/assets/angular.js?body=1:2706:19
    at Object.getService [as get] (http://0.0.0.0:3000/assets/angular.js?body=1:2832:39)
    at http://0.0.0.0:3000/assets/angular.js?body=1:2711:45
    at getService (http://0.0.0.0:3000/assets/angular.js?body=1:2832:39)
    at invoke (http://0.0.0.0:3000/assets/angular.js?body=1:2850:13)
    at Object.instantiate (http://0.0.0.0:3000/assets/angular.js?body=1:2882:23)
    at http://0.0.0.0:3000/assets/angular.js?body=1:4771:24
    at http://0.0.0.0:3000/assets/angular.js?body=1:4350:17
    at forEach (http://0.0.0.0:3000/assets/angular.js?body=1:161:20) 
Run Code Online (Sandbox Code Playgroud)

这是我的application.js文件

//= require jquery
//= require bootstrap
//= require suggest.min
//= require angular
//= require underscore
//= require restangular
//= require angular-strap.min
//= require angular-cookies
//= require angular-resource
//= require angular/index
Run Code Online (Sandbox Code Playgroud)

该应用初始化如下:

angular.module('angularApp', [
  'ngCookies', 
  'restangular'
]);
angular.module('angularApp.services', [
  'ngResource',
  'sessionService', …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ruby-on-rails angularjs restangular

4
推荐指数
2
解决办法
7086
查看次数