小编Chr*_*ier的帖子

如何从Ruby HEREDOC中删除前导空格字符?

我正在尝试制作一个Ruby heredoc的问题.它正在返回每行的前导空格,即使我包含 - 运算符,它应该抑制所有前导空白字符.我的方法看起来像这样:

    def distinct_count
    <<-EOF
        \tSELECT
        \t CAST('#{name}' AS VARCHAR(30)) as COLUMN_NAME
        \t,COUNT(DISTINCT #{name}) AS DISTINCT_COUNT
        \tFROM #{table.call}
    EOF
end
Run Code Online (Sandbox Code Playgroud)

我的输出如下:

    => "            \tSELECT\n            \t CAST('SRC_ACCT_NUM' AS VARCHAR(30)) as
COLUMN_NAME\n            \t,COUNT(DISTINCT SRC_ACCT_NUM) AS DISTINCT_COUNT\n
        \tFROM UD461.MGMT_REPORT_HNB\n"
Run Code Online (Sandbox Code Playgroud)

当然,这在这个特定的例子中是正确的,除了第一个"和\ t之间的所有空格.有没有人知道我在这里做错了什么?

ruby whitespace heredoc

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

如何将多个参数作为数组传递给ruby方法?

我有一个像这样的rails helper文件中的方法

def table_for(collection, *args)
 options = args.extract_options!
 ...
end
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样调用这个方法

args = [:name, :description, :start_date, :end_date]
table_for(@things, args)
Run Code Online (Sandbox Code Playgroud)

这样我就可以根据表单提交动态传入参数.我无法重写该方法,因为我在太多地方使用它,我怎么能这样做?

ruby arrays methods arguments ruby-on-rails

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

通过可能为nil的属性对ruby对象数组进行排序

我有一个对象数组,我需要通过一个可以是整数或零的位置属性进行排序,我需要将nil位置的对象放在数组的末尾.现在,我可以强制该位置返回一些值而不是nil,以便array.sort不会失败,但如果我使用0作为默认值,那么它将这些对象放在排序的前面.这种方法最好的方法是什么?我应该将nil值设置为一些"几乎"始终保证最终的可笑数字吗?或者是否有其他方法可以使array.sort方法将nil属性对象放在数组的末尾?代码如下所示:

class Parent
  def sorted_children
     children.sort{|a, b| a.position <=> b.position}
  end
end

class Child
  def position
    category ? category.position : #what should the else be??
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我把'else'变成1000000000,那么它很可能会把它们放在数组的末尾,但我不喜欢这个解决方案,因为它是任意的

ruby arrays sorting

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

中心JDialog超过父级

我有一个带有按钮的Java swing应用程序,当执行某个操作时会生成一个弹出窗口.我想在弹出窗口的中心点与渲染时父窗口的中心点对齐.如何计算插入setLocation()弹出窗口的x,y坐标?

只是为了澄清.我不想要的行为,setLocationRelativeTo()因为它将弹出窗口的左上角像素设置在父帧的中心像素上.我想将弹出窗口的中心像素设置在父帧的中心像素上.

java layout user-interface swing jframe

29
推荐指数
3
解决办法
4万
查看次数

Java:列表列表的笛卡尔积

我有一个问题,这是一个普通的编程问题,但我的实现是在Java中,所以我将以这种方式提供我的示例

我有一个这样的课:

public class Foo {
    LinkedHashMap<String, Vector<String>> dataStructure;

    public Foo(LinkedHashMap<String, Vector<String>> dataStructure){
        this.dataStructure = dataStructure;
    }

    public String[][] allUniqueCombinations(){
        //this is what I need to do
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要从my生成一个嵌套数组,LinkedHashMap它代表LHM中所有值的每个唯一组合.例如,如果我的LHM看起来像这样(伪代码,但我认为你可以得到这个想法......):

{"foo" => ["1","2","3"], "bar" => ["3","2"], "baz" => ["5","6","7"]};
Run Code Online (Sandbox Code Playgroud)

那么我的String [] []应该是这样的:

{
   {"foo","bar","baz"},
   {"1","3","5"},
   {"1","2","5"},
   {"1","3","6"},
   {"1","2","6"},
   {"1","3","7"},
   {"1","2","7"},
   {"2","3","5"},
   {"2","2","5"},
   {"2","3","6"},
   {"2","2","6"},
   {"2","3","7"},
   {"2","2","7"},
   {"3","3","5"},
   {"3","2","5"},
   {"3","3","6"},
   {"3","2","6"},
   {"3","3","7"},
   {"3","2","7"},
}
Run Code Online (Sandbox Code Playgroud)

我认为这就是所有这些,我手动(显然)这样做,所以我可能错过了一套,但我认为这说明了我想要做的事情.只要存在所有独特的组合,每组的顺序无关紧要.另外需要明确的是,您不知道LHM中有多少元素,也不知道每个后续Vector中有多少元素.我找到的答案与你想要在一个数组中所有元素的每个独特组合的情况相匹配,但没有任何东西完全符合这一点.如果这是问题的完全重复,请在回复中添加一个链接,我将关闭该问题.

更新 - 我将我的类型更改为字符串,因为我的真实世界示例实际上是字符串.我试图使用整数来使示例更具可读性,但到目前为止我得到的答案并没有很好地转换为字符串.所以,是的,它们是数字,但在我的实际情况中,它们将是除了使用这个特定应用程序的人之外没有多大意义的字符串.所以,这只是它的抽象.

java recursion nested-loops linkedhashmap data-structures

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

在rails应用程序中设置下载文件的文件名

我有一个控制器操作,允许用户下载扩展名为.ppt的文件.它不是真正的powerpoint二进制文件,只是powerpoint可以读取的xml-ish格式.该文件是从名为ElementsController的控制器的show动作下载的,但是show动作实际上并未在控制器中定义,但app/views/elements/show.ppt.builder中有一个模板文件.我在config/initializers/mime_types.rb中注册了Mime :: Type:

Mime::Type.register "multipart/related", :ppt

并正确下载文件,并在Windows系统上使用powerpoint打开,但问题是文件名.该文件的名称是3.ppt,其中三个是url中的id参数.我想知道是否有办法将文件名设置为比3.ppt更具描述性的东西.

谢谢,

-C

controller ruby-on-rails download

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

使用http基本身份验证和restful_authentication插件注销

我在rails应用程序中安装了restful_authentication插件,其session_controller具有如下所示的destroy方法:

def destroy
  self.current_user.forget_me if logged_in?
  cookies.delete :auth_token
  reset_session
  flash[:notice] = "You have been logged out."
  redirect_back_or_default('/')
end
Run Code Online (Sandbox Code Playgroud)

在应用程序控制器中我有:

before_filter :login_required
Run Code Online (Sandbox Code Playgroud)

在sessions_controller我有:

skip_before_filter :login_required
Run Code Online (Sandbox Code Playgroud)

我的问题是,当用户使用http基本身份验证进行身份验证时,他/她不会注销.会话被销毁,但用户可以毫无问题地导航到受限制的页面.通过插件进行会话身份验证不会发生此问题.如何使这种方法摆脱基本的认证?

authentication ruby-on-rails ruby-on-rails-plugins

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

ruby on rails模型的全局方法

我的所有模型中的方法都是这样的:

def formatted_start_date
  start_date ? start_date.to_s(:date) : nil
end
Run Code Online (Sandbox Code Playgroud)

我希望能为每个模型中的每个日期时间字段自动编写这样的方法,这样做的最佳方法是什么?

-C

activerecord model ruby-on-rails

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

如何在teradata中的文本字段中过滤掉非数字值?

我有一个teradata表,其中有大约1000万条记录,它将数字id字段存储为varchar.我需要将此字段中的值传输到另一个表中的bigint列,但我不能简单地说cast(id_field为bigint)因为我得到了无效的字符错误.通过查看值,我发现字符串中的任何位置都可能有一个字符,所以让我们说字符串是varchar(18)我可以过滤掉无效的行,如下所示:

     where substr(id_field,1,1) not in (/*big,ugly array of non-numeric chars*/)
     and substr(id_field,2,1) not in (/*big,ugly array of non-numeric chars*/)

etc, etc... 
Run Code Online (Sandbox Code Playgroud)

演员会工作,但从长远来看这是不可行的.它很慢,如果字符串有18个可能的字符,它会使查询不可读.如何在不使用非数字字符数组单独检查每个字符的情况下过滤掉在此字段中具有值而不会作为bigint转换的行?

示例值将是

   123abc464
   a2.3v65
   a_356087
   ........
   000000000
   BOB KNIGHT
   1235468099
Run Code Online (Sandbox Code Playgroud)

值不遵循特定的模式,我只需要过滤掉包含任何非数字数据的值.123456789没问题,但123.abc_c3865不是......

sql types filtering teradata

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

不引人注意的验证警告(不是错误)

如何在内置的不引人注目的验证之上构建警告级别通知?

完全是一个例子:我允许人们指定他们从预订开始等待桌子的时间.它必须介于0到12小时之间(没有负面等待,没有任何过关闭时间),但有人可能还想问"你确定"大约等了5个小时吗?

显然你可以在一个字段的基础上以一次性的方式做到这一点,但我想基于数据模型属性来实现它,因为那是我在"0到12之间"验证的地方.

所以,在我的头脑中,我可以看到需要扩展ValidationAttribute并实现IClientValidatable的东西.我还需要在自定义JavaScript文件中将验证方法添加到验证器中.是吗?

validation asp.net-mvc-3

6
推荐指数
0
解决办法
562
查看次数