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).
有没有办法在较少的参数中执行此操作(除非定义帮助程序)?
我正在审查另一个开发人员的代码,其中包含以下内容:
std::string name;
...
std::string::size_type colon = name.find(":");
Run Code Online (Sandbox Code Playgroud)
我争辩说,使用size_t会更容易理解和同样安全,因为STL标准规定std::string的std::basic_string<char, std::allocator>,并且std::allocator::size_type是size_t.
他希望保证STL标准不可能改变以使这个假设无效; 如果标准可以改变,那么size_type会更安全size_t.
这会发生吗?有没有其他理由可以使用size_type而不是size_t?
我想将组合方法与自定义类一起使用。
如果我的班级看起来像这样......
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?我原以为在那里会更有用。
我以前经历过这样的现象:如果一个<input>标签具有 CSS 属性display: none,那么它的值不会随其父表单一起提交。我现在处于一种奇怪的境地,这种行为是有帮助的!
我是否可以依靠display: none在提交表单时防止包含输入,或者它在技术上是否偏离规范?
编辑:到目前为止的答案都集中在其他方法上,以及后端验证的必要性,所以让我澄清一下;我知道这是一种有点奇怪的做事方式,而且我知道我需要在后端进行验证。我已经是; 只是我返回的参数的格式使我的处理的一个特定方面有点棘手。
尝试更清楚地重新表述这个问题:是否有可靠的 CSS 内方法来防止输入包含在其表单中?看来将字段设置display为none 有效,但我无法判断它是否应该有效。我不关心用户可能编辑前端 HTML / CSS,因为我会在后端捕获它。您可以假设一个非恶意用户。
我正在开发一个Ruby on Rails应用程序,其中一个数据库表有10列(pile_1到pile_10).在模型中访问这些列作为10元素数组会很方便.
感觉我应该能够强迫composed_of做我想做的事,但我无法弄清楚如何做.任何人都可以启发我,或建议一个更好的策略?
在翻译,
a = [1,2,3,4]
a = a.reverse()
Run Code Online (Sandbox Code Playgroud)
接下来,当我在翻译处打字时,我什么都没得到.所以似乎a = a.reverse()会生成一个空列表.这是设计的吗?
我在windows xp上使用python 2.5.
任何人都可以告诉我我的程序有什么问题??? 当我运行这个程序时,我面对"语法错误意外字符后续行字符":
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) #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.请解释这是怎么回事?
我正在迁移一个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?
我是开发人员学习/重新学习/刷新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风格的结构转换为C++风格的结构; 我加入的成员,这将迫使类型需要一个构造函数,因此,我必须切换malloc和free到new和delete.通过查找,我可以在任何地方找到分配类型(由于此代码库的约定)sizeof(TYPE).
有什么办法可以找到传递该类型指针的所有实例free吗?我认识到,由于参数free是void*,这不是一个保证我发现到处类型被释放.
例如,我可以free以某种方式重载,以便在任何地方free(TYPE*)调用时都会出现编译错误,但在其他任何地方都没有?
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_cast在const上回走,这似乎很好,但有没有更好的办法?