我是Ruby的新手,最近遇到了一个与创建Ruby on Rails应用程序时的值相比较的问题.在控制器中,我有以下语句总是返回false:
if (user.id != params[:id])
Run Code Online (Sandbox Code Playgroud)
问题是user.id(它是一个Active Record)是一个整数,params [:id]是一个字符串.我花了一段时间来弄清楚这一点,最后我把它改为:
if (user.id != params[:id].to_i)
Run Code Online (Sandbox Code Playgroud)
现在该声明按预期工作.
为了避免将来出现这种错误,有没有办法"编译"或让Ruby在你尝试比较2种不同的类型时发出警告?我遇到的其他一些我想要"编译检查"的问题是:
我目前正在Windows上使用带有Rails 2.3.2和RadRails IDE的Ruby 1.8.6-27 RC2.
我有n <div> s,每个都有<h1>标题和<ul>项目列表.
我想将它们放在画布上,然后从<div id="x">列表项y到<div id="z"> 绘制线条.我正在使用jQuery UI来实现<div> s draggable.
canvas元素是页面的一部分(文本的一段和一些表单元素在它之前)但是我可以在必要时更改它.
[编辑]
我用图表标记了这个问题,但是让我添加这个链接:Graph_(数学) :-)
我在变量中有以下字符串.
Stack Overflow is as frictionless and painless to use as we could make it.
我想从上面的行中获取前28个字符,所以通常如果我使用substr然后它会给我Stack Overflow is as frictio这个输出,但我想输出为:
Stack Overflow is as...
PHP中是否有任何预制函数可以这样做,或者请在PHP中为我提供此代码?
编辑:
我想要从字符串中总共28个字符而不会破坏一个单词,如果它会让我少于28个字符而不会破坏一个单词,那很好.
我正在通过javascript生成一个无序列表(使用jQuery).每个listitem必须为"click"事件接收自己的事件监听器.但是,我无法将正确的回调附加到正确的项目上.(剥离的)代码示例可能会略微清楚:
for(class_id in classes) {
callback = function() { this.selectClass(class_id) };
li_item = jQuery('<li></li>')
.click(callback);
}
Run Code Online (Sandbox Code Playgroud)
实际上,这次迭代还有更多,但我认为这与问题无关.在任何情况下,发生的事情是回调函数似乎被引用而不是存储(和复制).最终结果?当用户点击任何列表中的项目,它将始终执行的动作最后 class_id的在classes阵,因为它使用存储在功能callback在说具体点.
我找到了肮脏的解决方法(比如href在封闭的a元素中解析属性),但我想知道是否有办法以"干净"的方式实现我的目标.如果我的方法令人恐惧,请说出来,只要你告诉我原因:-)谢谢!
我IList<string>从函数返回(作为变量lst)然后我设置然后我
this.dataGridView1.DataSource = lst;
Run Code Online (Sandbox Code Playgroud)
datagrid添加一个标记为Length的列,然后列出每个字符串的长度.如何让它只列出字符串?
我一直使用这个mouseover事件,但在阅读我发现的jQuery文档时mouseenter.它们似乎完全相同.
这两者之间是否存在差异?如果是,我应该何时使用它们?
(也适用于mouseoutvs mouseleave).
所以我有一个C++程序,通常在它执行时将事物写入日志文件.这是使用fstream完成的.但是,现在我想要包含关闭日志记录的功能.基本上,我的代码看起来像这样:
bool isLogging;
fstream* logFilePtr;
Run Code Online (Sandbox Code Playgroud)
在我的代码中,有一堆语句如:
(*logFilePtr) << " Kernel call time in seconds: " << kTime << endl;
...
Run Code Online (Sandbox Code Playgroud)
现在,如果"isLogging"为真,我不希望这些打印.我可以用一堆if语句围绕它们,但我更喜欢比这更清洁的东西.我认为有一些方法可以采用C++流并将其重定向到"无",以便在使用<<运算符时,不会打印任何内容.
有谁知道如何重定向流,或有任何其他想法如何以优雅的方式处理这个?
谢谢,科林
我有一个问题,其中一对三维数组分配了大量的内存,程序有时需要用更大/更小的替换它们并抛出OutOfMemoryException.
示例:有5个分配的96MB阵列(200x200x200,每个条目中有12个字节的数据),程序需要用210x210x210(111MB)替换它们.它以类似于此的方式执行:
array1 = new Vector3[210,210,210];
Run Code Online (Sandbox Code Playgroud)
其中array1-array5与先前使用的字段相同.这应该将旧数组设置为垃圾收集的候选者,但是看起来GC不能足够快地执行并且在分配新数组之前分配旧数组 - 这会导致OOM - 而如果它们在新分配之前释放,则空间应该是足够.
我正在寻找的是一种做这样的事情的方法:
GC.Collect(array1) // this would set the reference to null and free the memory
array1 = new Vector3[210,210,210];
Run Code Online (Sandbox Code Playgroud)
我不确定完整的垃圾收集是否是一个好主意,因为该代码可能(在某些情况下)需要经常执行.
有没有正确的方法呢?
我有一个带有关于框的C#WinForms应用程序.我使用以下方法将版本号放在about框中:
FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location)
.FileVersion
Run Code Online (Sandbox Code Playgroud)
这最终给了我构建可执行文件的Subversion修订版号.
我还想将构建日期放入"关于"框中.我试过了:
File.GetLastWriteTime(Assembly.GetEntryAssembly().Location)
Run Code Online (Sandbox Code Playgroud)
但是这给了我可执行文件的写日期,它只对应于安装应用程序的日期(我们使用的是ClickOnce)没有构建.
我怎样才能获得构建日期?
我已经做了一段时间的桌面编程,但是想要开始与硬件接口.具体来说,我想学习如何使用串行端口来接收外部事件并提醒我的应用程序(例如,我可以在外部传感器检测到运动时打开相机).请告诉我如何开始使用,什么类型的传感器,什么书(或在线资源)可用.我尝试了Bing和谷歌,但我需要更多指针.
c# ×3
javascript ×3
jquery ×3
events ×2
.net ×1
arrays ×1
assemblies ×1
c++ ×1
canvas ×1
clickonce ×1
compilation ×1
data-binding ×1
datagridview ×1
fstream ×1
graph ×1
hardware ×1
ilist ×1
io ×1
iteration ×1
php ×1
ruby ×1
stream ×1
string ×1
substr ×1
xna ×1