小编tom*_*nek的帖子

如何使用Dino和Sinatra显示传感器输出?

我想在我的页面输出显示我的一个传感器(湿气)连接到Arduino.

下面的脚本,每隔一秒给我一些值(数字).

require 'dino'

board = Dino::Board.new(Dino::TxRx.new)
sensor = Dino::Components::Sensor.new(pin: 'A0', board: board)

on_data = Proc.new do |data|
  puts data
  sleep 1
end

sensor.when_data_received(on_data)

sleep
Run Code Online (Sandbox Code Playgroud)

我想我可以Sinatra用作API和Javascript脚本来显示异步输出.

所以这应该是这样的

%w(sinatra dino haml).each do |lib|
  require lib
end

board = Dino::Board.new(Dino::TxRx.new)
sensor = Dino::Components::Sensor.new(pin: 'A0', board: board)
sleep 1

get '/' do
  haml :index
end

get '/moisture' do
  on_data = Proc.new do |data|
    { moisture_value: data }
    sleep 1
  end

  sensor.when_data_received(on_data)
end
Run Code Online (Sandbox Code Playgroud)

你能给我一些提示或简单的好模式我应该如何处理?

我找到了样本sinatra app fo dino:https: …

javascript ruby asynchronous arduino sinatra

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

如何在update_attributes期间以管理员身份跳过验证?

当我尝试将用户编辑为管理员时,我想跳过验证.

模型

class User
  ...
  attr_accessible :company_id, :first_name, :disabled, as: :admin
Run Code Online (Sandbox Code Playgroud)

调节器

class Admin::UsersController
  ...
  def update
    @user = User.find(params[:id])
    @user.update_attributes(params[:user], as: :admin)
    redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
  end
Run Code Online (Sandbox Code Playgroud)

所以我试着改变update行动

def update
  @user = User.find(params[:id])
  @user.attributes = params[:user]
  @user.save(validate: false)
  redirect_to edit_admin_user_path(@user), :notice => "User Account Updated"
end
Run Code Online (Sandbox Code Playgroud)

但后来我没有访问set :disabled:company_id属性,因为我不知道在哪里设置as: :admin

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

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

如何等待ES索引在Rspec和Capybara完成?

如何避免sleep 1在该示例中使用等待ES索引完成?

describe Question do
  before do
    create :question, content: "Some test question",
                      app: @app
    create :question, content: "Some other question",
                      app: @app
    sleep 1
  end

  it_behaves_like "search results found" do
    let(:query) { "Some" }
    let(:results) { ["Some test question", "Some other question"] }
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails elasticsearch tire

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

当我使用表单对象时,我应该如何处理编辑和更新操作?

我有跟随表单对象来管理复杂的嵌套表单.

形成

= simple_form_for(@profile_form, :url => profiles_path) do |f|
  ...
Run Code Online (Sandbox Code Playgroud)

路线

resources :profiles
Run Code Online (Sandbox Code Playgroud)

调节器

class ProfilesController < ApplicationController
  def new
    @profile_form = ProfileForm.new
  end

  def edit
    @profile_form = ProfileForm.new(params[:id])
  end

  def create
    @profile_form = ProfileForm.new
    if @profile_form.submit(params[:profile_form])
      redirect_to @profile_form.profile, notice: 'Profile was successfully created.'
    else
      render action: "new"
    end
  end

  def update
    @profile_form = ProfileForm.new(params[:id])
    if @profile_form.submit(params[:profile_form])
      redirect_to @profile_form.profile, notice: 'Profile was successfully updated.'
    else
      render action: "edit"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

表格对象

class ProfileForm
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming …
Run Code Online (Sandbox Code Playgroud)

ruby forms ruby-on-rails object ruby-on-rails-3

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

如何在VIm和终端机中始终保持相同的当前目录?

我想我的终端当前目录遵循我的VIM。

例:

在终端:

> pwd
=> /Users/rege
> vim
Run Code Online (Sandbox Code Playgroud)

然后在VIM中

:cd /Users/rege/project
<Ctrl-z>(for suspend)
Run Code Online (Sandbox Code Playgroud)

在终端

> pwd
=> /Users/rege/project
Run Code Online (Sandbox Code Playgroud)

我正在使用MacOS,zsh,tmux。

我需要这个,因为当我试图在VIM中使用标签时,标签是从我的终端目录而不是vim中签入项目的。

因此,当我更改VIM当前目录时,总是需要更改终端当前目录。

unix vim vim-plugin

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

检查字符串是否包含任何图像标记的最简单方法是什么?

例如我有文字:

"testestestestt testestestes <img src='image.jpg'>"
Run Code Online (Sandbox Code Playgroud)

我想写函数检查字符串是否是img标签并返回true

javascript jquery

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

如何在jbuilder视图中返回空字符串而不是null?

我有简单的jbuilder视图

json.id pharmaceutic.id
json.name pharmaceutic.name
json.dosage pharmaceutic.dosage.name
Run Code Online (Sandbox Code Playgroud)

什么时候 pharmaceutic.dosage => nil

我呈现的json如下所示:

{"id":1,"name":"HerzASS ratiopharm","dosage":null}
Run Code Online (Sandbox Code Playgroud)

我想为所有jBuilder视图设置一些属性,nil它应该呈现为空字符串.

{"id":1,"name":"HerzASS ratiopharm","dosage":""}
Run Code Online (Sandbox Code Playgroud)

怎么实现呢?

ruby json ruby-on-rails jbuilder

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

如何使用simple_form在datetime字段中仅设置小时?

我想选择一个hour(10, 11, 12, 13, 14, 15)来自select_box和日期params[:call_date]

# params[:call_date] => "2013-11-05"
= simple_form_for @welcome_call do |f|
  = f.input :call_at, as: :datetime
  = f.association :user, collection: User.all
  = f.submit
Run Code Online (Sandbox Code Playgroud)

ruby datetime ruby-on-rails simple-form

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

如何在Rails 4中设置自定义字符串外键?

如何使用字符串foreign_key设置关联以正确设置has_one?

class Pharmaceutic < ActiveRecord::Base
  has_one :pharmaceutic_group, foreign_key: "code"
end

class PharmaceuticGroup < ActiveRecord::Base
  belongs_to :pharmaceutic, primary_key: 'code'
end

>> Pharmaceutic.last.pharmaceutic_group                                                                                        
  Pharmaceutic Load (0.3ms)  SELECT `pharmaceutics`.* FROM `pharmaceutics` ORDER BY `pharmaceutics`.`id` DESC LIMIT 1
  PharmaceuticGroup Load (0.3ms)  SELECT `pharmaceutic_groups`.* FROM `pharmaceutic_groups` WHERE `pharmaceutic_groups`.`code` = 2 ORDER BY `pharmaceutic_groups`.`id` ASC LIMIT 1
=> nil
>> Pharmaceutic
=> Pharmaceutic(id: integer, package_type: integer, group_code: string)
>> PharmaceuticGroup
=> PharmaceuticGroup(id: integer, code: string, name: string)
Run Code Online (Sandbox Code Playgroud)

例如,当:Pharmaceutic有group_code:aaa和PharmaceuticGroup有代码:aaa我想得到Pharmaceutic.last.pharmaceutic_group.name => 'AAA group …

ruby ruby-on-rails foreign-keys associations ruby-on-rails-4

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

如何在Ruby中按数字选择当前年度的季度?

我想要像这样的方法

Shift.by_quarter(1) => each shift in first quarter of current year
Run Code Online (Sandbox Code Playgroud)

现在我正在按日期选择一个季度班次

Shift
  scope :by_quarter, lambda{|date| 
    where starts_at: date.beginning_of_quarter..date.end_of_quarter}
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails date

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