小编ard*_*igh的帖子

Rails:在form_tag外提交按钮

我正在使用一个按钮在一组选定的复选框中执行处理.该解决方案基于RailsCast#165.

它一切正常,但只有在表单中包含submit_tag按钮(我的应用程序中的表).我想将提交按钮放在页眉中,但这会破坏与表单的连接.

如何在表单正文外放置提交按钮?

<%= form_tag select_cosmics_path, method: :put do %>
  <%= submit_tag "Accept Checked", :class => "btn btn-primary" %> 

  <table class="table table-striped"> 
   .
   .
  <% @cosmics.each do |cosmic| %>
    <tr>
      <td><%= check_box_tag "cosmic_ids[]", cosmic.id %></td>
       .
       .
    </tr>
  <% end %>
  </table>
<% end %>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

resources :cosmics do
  collection do
    put :select
  end
end
Run Code Online (Sandbox Code Playgroud)

forms ruby-on-rails

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

Rspec测试delayed_job

我的应用程序中有一些复杂的,长时间运行的delayed_job进程.我正在使用Rspec来测试流程中使用的各个方法和类,但我还想执行许多具有不同测试数据的端到端后台作业.

我在delayed_job wiki上找不到任何关于此问题的内容,这个问题看起来很有意思但我并不真正理解这里发生了什么. 使用rSpec测试delayed_job链的最佳方法是什么?

我可以使用工厂轻松设置测试数据,然后调用启动后台处理的类.我希望测试需要很长时间才能完成.

编辑后台代码

class Singleplex
    def perform(batch_id,user)   
      batch = start_batch(batch_id,user)
        ... do lots of stuff ...
    end
    handle_asynchronously :perform, queue: :singleplex, :run_at => Proc.new { 1.second.from_now }
Run Code Online (Sandbox Code Playgroud)

规格/工厂/ batches.rb

FactoryGirl.define do
  factory :batch do
    batch_type 'singleplex'
    name 'valid panel'
    status 'ready'
  end

  factory :batch_detail do
    chrom 7
    chrom_start 140435012
    chrom_end 140435012
    target_offset 150
    padding 4
    primer3_parameter_id 1
    snp_mask 't'
    status 'ready'
    batch
  end
end
Run Code Online (Sandbox Code Playgroud)

然后像这样运行测试

describe Batch do  
  it 'runs Singleplex for a valid panel' do
    batch …
Run Code Online (Sandbox Code Playgroud)

rspec delayed-job

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

在现有的vagrant box上添加端口转发

我正在运行的流浪盒(ubuntu,在OS X Mavericks主机上)运行良好.

我正在尝试从主机设置pgAdmin,并且无法为sql流量打开新端口.

我在我的Vagrantfile中添加了一行(最后一行):

config.vm.network "forwarded_port", guest: 3000, host: 8080   # http
config.vm.network :forwarded_port, guest: 35729, host: 35729
config.vm.network "forwarded_port", guest: 5432, host: 7001   # postgres
Run Code Online (Sandbox Code Playgroud)

我跑了流浪汉,并多次弹跳Vagrant盒子.重新启动时,未列出新的端口转发:

==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 3000 => 8080 (adapter 1)
    default: 35729 => 35729 (adapter 1)
    default: 22 …
Run Code Online (Sandbox Code Playgroud)

vagrant

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

每个控制器的Rails布局

我有一个家庭控制器和一个新闻控制器.我希望这两个控制器都使用application.html.erb布局文件,除此之外,对于家庭,使用家庭布局和新闻,使用新闻布局.然后渲染一个特定的视图.在轨道中这可能吗?

换句话说,我不希望为每个视图指定一个布局,但是每个控制器都要从application.html.erb布局继承.

我想要做的是删除添加顶部导航栏的冗余,并在每个布局文件中包含javascript/css.我宁愿将其包含在一个文件中,并使用另一个布局执行控制器特定布局,然后最终渲染视图.

谢谢

ruby-on-rails

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

带有 (*) 签名的 Ruby 方法

在这篇关于模式匹配的有趣博客文章中,有一些代码的方法签名为(*)

class Request < Data.define(:path, :scheme, :format)
  def deconstruct_keys(*)
    { path: @path, scheme: @scheme, format: @format }
  end

  def deconstruct(*)
    path.split("/").compact
  end
end
Run Code Online (Sandbox Code Playgroud)

这不同于

def a_method(*args)
Run Code Online (Sandbox Code Playgroud)

我在Ruby 文档中找不到任何信息。

这是什么def deconstruct_keys(*)意思?

注意Ruby Weekly上提到了这个问题

ruby

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

Postgres语言环境错误

我在Ubuntu上的Digital River上托管了一个Postgres数据库,并按照这些说明安装:

但是区域设置有问题,我无法解决如何修复它.当我运行psql命令时,我收到以下错误:

postgres@assay:/home/deployer$ psql
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
psql (9.1.9)
Run Code Online (Sandbox Code Playgroud)

unix postgresql ubuntu locale

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

__callee__和__method__之间的区别

在Ruby中,可以使用其中之一

__callee__ 
Run Code Online (Sandbox Code Playgroud)

要么

__method__ 
Run Code Online (Sandbox Code Playgroud)

找到当前正在执行的方法的名称.

两者有什么区别?

ruby metaprogramming

14
推荐指数
3
解决办法
2024
查看次数

AngularUI为模态控制器分隔文件

我的Angular应用程序有许多模态,我有AngularUI来提供模态指令.

http://angular-ui.github.io/bootstrap/

到目前为止,我有几个主控制器,这些都在app.js文件中作为路由.

$routeProvider.when '/dashboard',         templateUrl: '/templates/dashboard/dashboard.html', controller: 'DashboardController'
$routeProvider.when '/dataset/:panel_id', templateUrl: '/templates/dataset/dataset.html',   controller: 'DatasetController'
$routeProvider.when '/batches/:panel_id', templateUrl: '/templates/design/design.html',     controller: 'PanelController'  
Run Code Online (Sandbox Code Playgroud)

这很好用.

然后我创建了一个调用模态的函数,而modal有一个ConfigureModalCtrl的实例控制器.我最初在调用控制器文件的底部有这个,它工作正常.

$scope.invokeConfigureModal = (assay_id) ->
   $scope.assay_id = assay_id
   $scope.primer3 = $scope.getPrimer(assay_id)
   modalInstance = $modal.open(
     templateUrl: '/templates/configure_modal/configure_modal.html'
     controller: ConfigureModalCtrl
     windowClass: 'configure-dialog'
     resolve:
           primer3: ->
             $scope.primer3
   )
   modalInstance.result.then ((primer3) ->
      $scope.primer3 = primer3
      return
     ), ->
      return   
Run Code Online (Sandbox Code Playgroud)

现在我已将模态实例控制器移动到它自己的文件中,但调用函数找不到它.

angular.module('assaypipelineApp').controller "ConfigureModalCtrl", ($scope,  $modalInstance, primer3) ->
  $scope.primer3 = primer3['data']
  $scope.ok = ->  
    $modalInstance.close $scope.primer3
    return
  $scope.cancel = ->
    $modalInstance.dismiss "cancel" …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui

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

FactoryGirl:将值false赋给布尔值

在我的工厂我有一个布尔字段(已评估),我试图将其设置为false.我希望该字段是必需的,并始终设置为truefalse

模型

  validates_presence_of :evaluated
Run Code Online (Sandbox Code Playgroud)

FactoryGirl.define do
  factory :submission do
    evaluated true
    score 1.5
    ranking 1.5
    submission_type "user"
    .
    .
  end
end
Run Code Online (Sandbox Code Playgroud)

在测试中

    it { should validate_presence_of(:evaluated) }
Run Code Online (Sandbox Code Playgroud)

当我运行它

     Failure/Error: expect(@submission).to be_valid
   expected #<Submission id: nil, competition_id: 163, user_id: 134, team_id: nil, evaluated: false, score: 1.5, ranking: 1.5, submission_type_cd: "user", withdrawn: true, withdrawn_date: "2016-02-08", created_at: nil, updated_at: nil> to be valid, but got errors: Evaluated can't be blank
Run Code Online (Sandbox Code Playgroud)

如果我将值更改为true,则测试通过

    evaluated true
Run Code Online (Sandbox Code Playgroud)

如何为Booleans设置错误值的工厂?

rspec ruby-on-rails factory-bot

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

删除ActiveAdmin资源

我在Rails 3.1.1,Ruby 1.9.2和最新的gem(从github中提取).

将资源添加到Ruby的优秀ActiveAdmin gem中非常容易.我可以看到您还可以通过从app/admin中删除相关的.rb文件来删除资源.

我在文档中找不到任何关于它的内容,但有没有人知道是否有另一种方法删除资源...或者正确删除ActiveAdmin资源文件?

ruby-on-rails activeadmin

6
推荐指数
3
解决办法
6427
查看次数