小编jua*_*tas的帖子

重新加载factory_girl工厂

我希望当我在工厂中进行更改时,我会在rails控制台中看到它们而不重新启动所有控制台.

我找到了一些线条并对它们进行了测试,对所发生的事情了解不多,文档对我来说并不清楚:

FactoryGirl.reload
Run Code Online (Sandbox Code Playgroud)

我也测试过:

> FactoryGirl.factories.clear
> FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions
                               # but NoMethodError is raised
=> ActiveRecord::RecordNotFound: Couldn't find Address with ID=277 Torphy Squares
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails factory-bot

12
推荐指数
2
解决办法
6712
查看次数

如何使用Ruby删除文本文件中间的数据行

我知道如何写入文件,并从文件中读取,但我不知道如何修改文件,除了将整个文件读入内存,操作它,并重写整个文件.对于大文件,这不是很有效率.

我真的不知道追加和写的区别.

例如

如果我有一个文件包含:

Person1,will,23
Person2,Richard,32
Person3,Mike,44
Run Code Online (Sandbox Code Playgroud)

我怎么能只删除包含Person2的行?

ruby csv file-io ruby-on-rails file

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

Rails - 不在邮件程序中工作的URL帮助程序

我试过了:

class MyMailer
  def routes
    Rails.application.routes.url_helpers
  end

  def my_mail
    @my_route = routes.my_helper
    ... code omitted 
  end
Run Code Online (Sandbox Code Playgroud)

邮件内部也是:

include Rails.application.routes.url_helpers

def my_mail
  @my_route = my_helper
Run Code Online (Sandbox Code Playgroud)

另外,简单的方法,在邮件模板中:

= link_to 'asd', my_helper
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动控制台时,我得到:

undefined method `my_helper' for #<Module:0x007f9252e39b80> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

更新

我正在使用_url助手的形式,即my_helper_url

ruby-on-rails actionmailer urlhelper

12
推荐指数
3
解决办法
8910
查看次数

forelab循环使用Matlab中的字符串

我想创建一个迭代几个字符串的循环,但在Matlab中无法这样做.

有效的是:

for i=1:3
  if (i==1)
    b='cow';
  elseif (i==2)
    b='dog';
  else
    b='cat';
  end

  disp(b);
end
Run Code Online (Sandbox Code Playgroud)

结果是:

cow
dog
cat
Run Code Online (Sandbox Code Playgroud)

但我想要的是更优雅的东西,看起来像:

for i=['cow','dog','cat']
  disp (i);
end
Run Code Online (Sandbox Code Playgroud)

并给出相同的结果.

Matlab中有选项可以做到这一点吗?

加成:

我稍后需要使用单词作为字符串来使用而不仅仅是显示(disp仅作为示例).我试图在我的真实程序中使用单元格数组:

clear all;
close all;
clc;

global fp_a
global TEST_TYPE
global SHADE_METHODE

for fp_a=11:24
for shade={'full','fast'}
    SHADE_METHODE=shade(1);
    for test={'bunny','city'}
        TEST_MODE=test(1);
        fprintf ('fp_a:%d | test: %s | shade: %s',fp_a,TEST_TYPE,SHADE_METHODE);
        ray_tracing;
    end
end
end
Run Code Online (Sandbox Code Playgroud)

它不起作用,因为值保持为单元格而不是字符串我收到错误消息:

??? 使用==> fprintf时出错没有为'cell'输入定义函数.

* - 我真的不需要fprintf我只是用它来检查值是否正确.

** - ray_tracing是我使用字符串值的代码

foreach matlab

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

在Ruby中打开并保存base64编码的图像数据URI

从我看到的几个帖子中,我正在尝试这个

x = Base64.decode64("data:image/png;base64,iVBOR....")
File.open('test.png','wb') {|file| file.write x}
Run Code Online (Sandbox Code Playgroud)

但是后来我无法用观众打开图像,我还需要做更多的事吗?

ruby base64 file

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

为什么我的表单提交两次?

因为某种原因,我的表单只需按一下按钮即可提交两次.这是我第一次使用jquery Form插件,我想jquery提交一次,表单也"自然"提交.我已经看到,补救措施是将"return false"附加到表单的onSubmit事件处理程序.我以为我在做那件事,但显然它不起作用.

有人可以帮忙吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>User form entry </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="jquery.validate.js"></script>
<script src="jquery.passwordStrength.js"></script>
<script src="jquery.form.js"></script>
<script>

$(document).ready(function() {
    $('#signupForm').ajaxForm(function() { 
         var queryString = $('#signupForm').formSerialize(); 
         $.post('process.php', queryString);
    });
});
</script>
</head>
<body>
   <form id="signupForm" action="process.php" onsubmit="return false" method="post">
   <fieldset class="password">
          ... form goes here
   <button type="submit" name="formSubmit" value="submit">Click to submit</button>
   </form>

<div id="results"></div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试将onsubmit ="return false"添加到表单元素,但之后我根本没有提交.我也尝试过添加"return false".到jQuery,但后来我还有两次提交.我错过了什么?这似乎是根据jQuery Form Plugin网站的标准方法..我的表单有何不同?

(顺便说一下,只是为了清楚..我不是在谈论通过反复按下按钮连续多次提交多个表格的问题.我的问题是"一个提交按钮推送=两个提交".)

php forms jquery jquery-forms-plugin double-submit-problem

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

Backbone中属性和toJSON方法之间的区别

总是相当于使用一个或另一个?

这些打印机在控制台同样的东西

class Model extends Backbone.Model
  defaults:
    some: 'thing'
    other: 'item'

model = new Model

console.log model.attributes
console.log model.toJSON()
Run Code Online (Sandbox Code Playgroud)

backbone.js

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

仅为HTML元素的一部分着色

我将如何仅background-clip使用CSS来着色HTML元素的一部分.

我看起来像:

div {
   background-image: url('mi_image');
   ***: 50% 30em; /* Background only covering 50% height and 30em width */
}
Run Code Online (Sandbox Code Playgroud)

如果有必要,我也会接受JavaScript解决方案 - 但纯CSS会更好.

javascript css

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

如何配置nginx + Unicorn以避免超时错误?

我有一个在nginx + Unicorn(Ubuntu 12.04)上运行的Rails(v3.2.13,Ruby 2.0.0)应用程序.一切都运行良好,除非管理员用户通过CVS文件上传用户(数千).问题是我将超时设置为30秒,导入过程需要更多时间.所以,30秒后我得到一个nginx 502 Bad Gateway页面(Unicorn worker被杀).

显而易见的解决方案是增加超时,但我不希望这样,因为它会导致另一个问题(我猜),因为它不是典型的行为.

有办法处理这类问题吗?

非常感谢提前.

PS:也许解决方案是修改代码.如果是这样,我想避免用户执行另一个请求.

一些想法(不知道是否可能):

  • 设置专门处理此请求的工作人员.
  • 向独角兽发送"正在进行中的工作"信号以避免被杀.

nginx的-app.conf

upstream xxx {
  server unix:/tmp/xxx.socket fail_timeout=0;
}


server {
  listen   80; 

  ...

  location / {

    proxy_pass  http://xxx;
    proxy_redirect     off;
    ...

    proxy_connect_timeout      360;
    proxy_send_timeout         360;
    proxy_read_timeout         360;
  }
}
Run Code Online (Sandbox Code Playgroud)

unicorn.rb

worker_processes 2

listen "/tmp/xxx.socket"

timeout 30

pid "/tmp/unicorn.xxx.pid"
Run Code Online (Sandbox Code Playgroud)

timeout ruby-on-rails nginx unicorn

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

在omniauth中命名空间的Rails路由

我在routes.rb中有这个:

namespace :api do
  namespace :v1 do
    ...
    devise_for :users, constraints: { format: :json },
      :controllers => { :omniauth_callbacks => "auths" }
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

并产生这些路线:

new_api_v1_user_confirmation GET        /api/v1/users/confirmation/new(.:format)          api/v1/confirmations#new {:format=>:json}
                             GET        /api/v1/users/confirmation(.:format)              api/v1/confirmations#show {:format=>:json}
api_v1_user_omniauth_authorize            /users/auth/:provider(.:format)                   auths#passthru {:provider=>/facebook|twitter|linkedin/, :format=>:json}
api_v1_user_omniauth_callback            /users/auth/:action/callback(.:format)            auths#(?-mix:facebook|twitter|linkedin) {:format=>:json}
Run Code Online (Sandbox Code Playgroud)

如何获取最后两个命名空间的路由,如:

/api/v1/auth/:provider(.:format)
/api/v1/auth/:provider/callback(.:format)
Run Code Online (Sandbox Code Playgroud)

routes devise omniauth ruby-on-rails-3

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