小编Cho*_*ett的帖子

非模型形式的简单隐藏字段

Ruby-on-Rails中最简单的方法是创建几个简单的隐藏字段,其中包含已知值和多个非模型形式的相同名称(在我的情况下为form_remote_tag,但我猜这是不相关的)?

通过"简单的隐藏字段",我的意思是名称只是一个字符串(field_name)而不是数组(field_name[])的一部分,因此可以简单地从params哈希中读取值,params[:field_name]而不是params[:field_name][0].

我发现了

<% form_remote_tag :url => {:action => "do_act"} do %>
  <%= hidden_field :field_name, 0, :name => "field_name", :value => "foo" %>
  <%= submit_tag "Submit" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

生成一个可接受的元素(<input id="field_name_0" name="field_name" type="hidden" value="foo" />),但如果省略该:name参数,则渲染字段具有名称field_name[0].省略0显然会导致奇怪的行为.

<%= hidden_field_tag :field_name, "foo" %> 如果只有一个这样的表单,则生成一个可接受的元素,但如果有多个表单,则生成HTML警告(重复的ID).

有没有办法在较少的参数中执行此操作(除非定义帮助程序)?

forms ruby-on-rails

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

使用std :: string :: size_type比size_t有什么好处吗?

我正在审查另一个开发人员的代码,其中包含以下内容:

std::string name;
...
std::string::size_type colon = name.find(":");
Run Code Online (Sandbox Code Playgroud)

我争辩说,使用size_t会更容易理解和同样安全,因为STL标准规定std::stringstd::basic_string<char, std::allocator>,并且std::allocator::size_typesize_t.

他希望保证STL标准不可能改变以使这个假设无效; 如果标准可以改变,那么size_type会更安全size_t.

这会发生吗?有没有其他理由可以使用size_type而不是size_t

c++ stl size-type

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

带有块的方法的包装器

我想将组合方法与自定义类一起使用。

如果我的班级看起来像这样......

class MyClass
  def initialize
    @data = []
  end
  def to_a
    @data
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以称之为...

myobj = MyClass.new
myobj.to_a.combination(2) {|a,b| puts "#{a} #{b}" }
Run Code Online (Sandbox Code Playgroud)

但我更愿意拥有这个......

myobj.combination {|a,b| puts "#{a} #{b}" }
Run Code Online (Sandbox Code Playgroud)

我尝试编写一个类方法来包装组合方法,传递块。但它不起作用。

def combination(&block)
  @data.to_a.combination(2) block.call
end
Run Code Online (Sandbox Code Playgroud)

另外,有谁知道为什么组合在 Array 类中而不是 Enumerable?我原以为在那里会更有用。

ruby

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

display: none 是否禁用 &lt;input&gt;?

我以前经历过这样的现象:如果一个<input>标签具有 CSS 属性display: none,那么它的值不会随其父表单一起提交。我现在处于一种奇怪的境地,这种行为是有帮助的!

我是否可以依靠display: none在提交表单时防止包含输入,或者它在技术上是否偏离规范?

编辑:到目前为止的答案都集中在其他方法上,以及后端验证的必要性,所以让我澄清一下;我知道这是一种有点奇怪的做事方式,而且我知道我需要在后端进行验证。我已经是; 只是我返回的参数的格式使我的处理的一个特定方面有点棘手。

尝试更清楚地重新表述这个问题:是否有可靠的 CSS 内方法来防止输入包含在其表单中?看来将字段设置displaynone 有效,但我无法判断它是否应该有效。我不关心用户可能编辑前端 HTML / CSS,因为我会在后端捕获它。您可以假设一个非恶意用户。

html css forms

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

Ruby on Rails:将多个列聚合到一个数组中

我正在开发一个Ruby on Rails应用程序,其中一个数据库表有10列(pile_1到pile_10).在模型中访问这些列作为10元素数组会很方便.

感觉我应该能够强迫composed_of做我想做的事,但我无法弄清楚如何做.任何人都可以启发我,或建议一个更好的策略?

ruby arrays ruby-on-rails aggregation

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

Python a = a.reverse使列表为空?

在翻译,

a = [1,2,3,4]
a = a.reverse()
Run Code Online (Sandbox Code Playgroud)

接下来,当我在翻译处打字时,我什么都没得到.所以似乎a = a.reverse()会生成一个空列表.这是设计的吗?

我在windows xp上使用python 2.5.

python

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

syntaxerror:python中的行继续符之后的意外字符

任何人都可以告诉我我的程序有什么问题??? 当我运行这个程序时,我面对"语法错误意外字符后续行字符":

f = open(D\\python\\HW\\2_1 - Copy.cp,"r");

lines = f.readlines();

for i in lines:

    thisline = i.split(" ");
Run Code Online (Sandbox Code Playgroud)

python

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

使用位域输出结构大小

#pragma pack(2)
struct a{
  unsigned a:1;
  unsigned b:1;
  int c;
  unsigned d:4;
  unsigned :4;
  unsigned e:1;
  unsigned :0;
  unsigned f:1;} ;

int main()
{
    printf("%d",sizeof(struct a));
}
Run Code Online (Sandbox Code Playgroud)

以下程序的输出在未使用pragma pack时为16,但在使用pragma pack时为10.请解释这是怎么回事?

c c++

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

_ATL_ALLOW_UNSIGNED_CHAR何时起作用?

我正在迁移一个Visual C++项目,该项目使用从VS2010到VS2013的ATL/MFC.项目编译/J("假设char是无符号的"),并且有太多代码可能依赖或不依赖于该事实来轻松删除编译器标志.

在VS2013下,在atldef.h中/J导致编译器错误:ATL doesn't support compilation with /J or _CHAR_UNSIGNED flag enabled.这可以通过定义来抑制_ATL_ALLOW_UNSIGNED_CHAR.Microsoft 在MSDN文档中/J提到了这一点以及模糊的声明:"如果将此编译器选项与ATL/MFC一起使用,则可能会生成错误.虽然您可以通过定义_ATL_ALLOW_CHAR_UNSIGNED来禁用此错误,但不支持此解决方法,并且可能并不总是有效."

有谁知道在什么情况下使用它是安全的还是不安全的_ATL_ALLOW_CHAR_UNSIGNED

mfc atl visual-c++ visual-studio-2013

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

C++的新手 - &参数的符号前面

我是开发人员学习/重新学习/刷新c ++

我正在进行数据库访问我有以下代码,我很难理解在这种情况下&做了什么.

SQLHENV     hEnv = NULL;

if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv) == SQL_ERROR)
    {
Run Code Online (Sandbox Code Playgroud)

如果我删除&我得到此错误.

'SQLAllocHandle' : cannot convert parameter 3 from 'SQLHENV' to 'SQLHANDLE *'
Run Code Online (Sandbox Code Playgroud)

起初我以为它只是简单地将此字段作为参考传递,但基于错误,它更像是一些如何允许它转换?

c++ reference

0
推荐指数
2
解决办法
594
查看次数

查找在给定指针类型上调用free的位置

我正在将类型从C风格的结构转换为C++风格的结构; 我加入的成员,这将迫使类型需要一个构造函数,因此,我必须切换mallocfreenewdelete.通过查找,我可以在任何地方找到分配类型(由于此代码库的约定)sizeof(TYPE).

有什么办法可以找到传递该类型指针的所有实例free吗?我认识到,由于参数freevoid*,这不是一个保证我发现到处类型被释放.

例如,我可以free以某种方式重载,以便在任何地方free(TYPE*)调用时都会出现编译错误,但在其他任何地方都没有?

c++ visual-c++

0
推荐指数
1
解决办法
101
查看次数

使用修改后的指向const的指针返回指向非const的指针

const从函数返回指针到非的最佳实践是什么,其中指针是通过修改(非const)指针到const?获得的.像这样:

NODE *top_level(const NODE *input)
{
  while (input->parent != nullptr)
    input = input->parent;  // NODE::parent is (non-const) NODE*

  return input;  // Compile failure: 
                 // Cannot convert from 'const NODE *' to 'NODE *'
}
Run Code Online (Sandbox Code Playgroud)

我可以const_castconst上回走,这似乎很好,但有没有更好的办法?

c++ const

0
推荐指数
1
解决办法
127
查看次数