我写了一个宝石,其中包含一些我想分享的基本逻辑.我发布它,安装它,使用它.
还有其他功能,我认为这些功能特定于我的项目.我想使用相同的类名添加其他方法,因为它很熟悉,并且我可以很容易地跟踪心理状态.
如何安装gem,然后添加方法而不会发生冲突?我过去曾在宝石中定义了重写方法(特别是Devise方法),但在需要扩展类本身时从未绊倒过.
首先-查看此火车残骸代码:
xml['soapenv'].Body {
xml.Request {
xml.version ("1.1") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.name (@admin_name.name) {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.source_version ("1.0") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.downloadmarked ("0") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.from (@dateFrom) {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.time_from ("0000") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.to (@dateTo) {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.time_to ("2359") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.limit ("100") {
xml.parent.namespace = xml.parent.namespace_definitions.first
}
xml.parent.namespace = xml.parent.namespace_definitions.first
}
}
Run Code Online (Sandbox Code Playgroud)
这将创建如下XML:
<soapenv:Body>
<Request>
<version>1.1</version>
<name>COMPANY NAME HERE</name> …Run Code Online (Sandbox Code Playgroud) 实验上我已经了解到以下代码:
<td><%= link_to 'Notify', '/w/'+w.id+'/notify', method: :get, :class => "btn btn-success notify-btn" %></td>
Run Code Online (Sandbox Code Playgroud)
无论这个jQuery如何都会触发:
$('.notify-btn').click(function(e){
e.preventDefault();
bootbox.confirm("Alert?", function(result){
if(result === true){
return true;
} else {
return false;
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是由于方法:: get.我逐个删除了链接的元素并尝试了各种组合.如果方法:: get就在那里,它就会触发.
我可以阻止它e.stopPropagation,但那么它不会跟随链接在所有.即使我单击"确定",它也只是在页面上无所事事.
如果我摆脱erb并使用直接HTML,如下所示:
<a href="/w/53531e8a963e6503c60002b2/notify" class="btn btn-success notify-btn" data-method="get">Notify</a>
Run Code Online (Sandbox Code Playgroud)
而data-method ="get"就在那里,结果相同.如果我删除数据方法,它将弹出警报并阻止跟踪链接,但即使我确认,它也不会实际触发链接.
关于我做错了什么的任何想法?
当我在源文件中删除调试点时,我可以看到以下图像:
但是当我删除这个调试点时,我只看到以下内容:
颜色的变化受到具有一些不透明度的叠加的影响.
相关代码是:
flashSuccessMessage = function(msg) {
$('#overlay').hide();
var $ch = $("#content-header");
$ch.after('<div id="flash_message" class="alert"></div>');
var $fm = $("#flash_message");
$fm.addClass("alert-success");
$fm.append(msg);
$fm.show().children().show();
$fm.fadeOut(3000);
$fm.empty();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,msg是"成功添加的作业类型"
我无法理解为什么在我调用$ fm.append(msg)之后我在执行中断时才看到该消息; 在那之后我(三条线)中断的并不重要,它会出现.当我没有任何中断并让页面执行脚本时,会出现绿色警报,但没有单词.
有任何想法吗?
我在这里尝试了各种jQuery方法 - 而不是使用.html()代替.append(),我尝试在flash_message id中插入msg开始,尝试插入包含在内的消息
标签,尝试重新订购的东西,(但我需要在结束时清除这个div的内容...)
我已经使用了jQuery的.delay()方法等.它是否跳转到执行.empty()尽管其他元素使用计时器来完全执行?
我可能会在这里构成一个有效的SO问题,但是......
在ruby中,将字符串转换为int,添加一些值,然后返回字符串的最佳方法是什么?
(string.to_i+1).to_s
Run Code Online (Sandbox Code Playgroud)
感到错误和丑陋.
编辑:
在阅读下面的各种评论后,我将按原样离开,而不选择答案,因为大多数人说我的解决方案是正确的.我想Ruby已经让我觉得总有一种更简单,更好的方法(我们正在寻找这么简单的解决方案,这不是坏事吗?是吗?)
我的例子导致了一些关于.next的提交,我的实际用例不仅仅是递增,我将AM/PM时间字符串转换成24小时的时间,所以实际上我需要采取像07:00 PM或7p这样的东西或7 pM或类似的东西,并将其转换为19:00
我工作得很好,我只是在寻找更优雅的东西.我知道SO是针对"如何"的问题和堆栈审查是为了代码审查,我在这里有点作弊...抱歉mods.
我有一个像这样的 arel 对象:
#<Event:0x000001097d5fa0> {
:id => 6302,
:zone_id => nil,
:date => Thu, 02 Jan 2014 09:13:17 UTC +00:00,
:status => 1,
:created_at => Thu, 02 Jan 2014 09:13:17 UTC +00:00,
:updated_at => Fri, 03 Jan 2014 09:22:16 UTC +00:00,
:description => "New alert",
:controller_id => 699,
:event_type => 10,
:is_fault => false,
:delta => true
}
Run Code Online (Sandbox Code Playgroud)
当我渲染 :json => result (结果是一堆这些)时,它会打印出来:
{"controller_id"=>699, "created_at"=>"2014-01-02T09:13:17Z", "date"=>"2014-01-02T09:13:17Z", "delta"=>true, "description"=>"New alert", "event_type"=>10, "id"=>6302, "is_fault"=>false, "status"=>1, "updated_at"=>"2014-01-03T09:22:16Z", "zone_id"=>nil}
Run Code Online (Sandbox Code Playgroud)
并且 JSON 验证器抱怨nil不是字符串。JSON …
我对客户购买的许可证数量与他们使用的数量进行了非常非常简单的逻辑测试:
else if(utype == "3"){
var tech_lic = $("#technician_lic").val();
console.log('tech lic = ' + tech_lic)
var tech_allow = $("#technician_lic_allow").val();
console.log('tech allow = ' + tech_allow)
if(tech_lic >= tech_allow)
{
alert("You must purchase more licenses to create this Technician");
return false;
}
Run Code Online (Sandbox Code Playgroud)
我投入了试图调试它的console.log语句 - 通常它们不在那里.
单击"添加"按钮时Console.log:
tech lic = 4 application.js:262
tech allow = 100 application.js:264
Run Code Online (Sandbox Code Playgroud)
然后我们在窗口中点击"您必须购买更多许可证"警报.
有没有搞错?
如何4> = 100评估为真?
ruby ×4
javascript ×3
html ×2
jquery ×2
activerecord ×1
css ×1
dom ×1
gem ×1
if-statement ×1
json ×1
logic ×1
nokogiri ×1
xml ×1