我正处于开发学习的某个阶段,我觉得我必须更多地了解接口.
我经常阅读它们,但似乎我无法掌握它们.
我已经阅读过这样的例子:动物基类,IAnimal界面,如'Walk','Run','GetLegs'等等 - 但我从来没有做过某些事情,感觉就像"嘿我应该使用界面这里!"
我错过了什么?为什么我要掌握这么难的概念!我只是因为我可能没有意识到对一个人的具体需求而感到害怕 - 主要是由于理解它们的一些缺失方面!这让我觉得自己在成为开发者方面缺少一些东西!如果有人有过这样的经历并取得了突破,我会很感激如何理解这个概念.谢谢.
假设你有一个像这样的javascript对象:
var data = { foo: 'bar', baz: 'quux' };
Run Code Online (Sandbox Code Playgroud)
您可以通过属性名称访问属性:
var foo = data.foo;
var baz = data["baz"];
Run Code Online (Sandbox Code Playgroud)
但是,如果您不知道属性的名称,是否可以获取这些值?这些属性的无序性质是否使它们无法区分?
在我的情况下,我特别想到一个函数需要接受一系列名称 - 值对的情况,但属性的名称可能会改变.
到目前为止,我对如何执行此操作的想法是将属性的名称与数据一起传递给函数,但这感觉就像一个黑客.如果可能的话,我宁愿用内省来做这件事.
我的主页(或欢迎页面)将包含来自两个模型的数据(我们称之为作者和帖子).我是rails的新手,并不确定实现这一目标的最佳方法是什么.
我应该创建一个名为welcome的新控制器,它从作者和帖子中收集数据,然后在欢迎索引视图中显示它们吗?或者我应该在帖子模型下有一个欢迎视图,它也可以从作者那里获取数据?或任何其他方式来实现这一目标?
我理解如何在技术上完成所有这些,但只是不确定使用rails框架的最佳实践方法是什么.
我想<button>在ASP.NET网站中使用较新的标签,除其他外,它允许CSS样式的文本并在按钮内嵌入图形.asp:Button控件呈现为<input type="button">,有没有办法让预先存在的控件渲染到<button>?
从我读过的内容来看,当按钮位于a中时<form>,IE发布按钮的标记而不是value属性是不兼容的,但是在ASP.NET中它将使用onclick事件来触发__doPostBack,所以我不喜欢认为这将是一个问题.
我有什么理由不这样做吗?如果没有,您将如何使用asp:Button或基于它的新服务器控件来支持它?如果可以避免,我宁愿不编写自己的服务器控件.
起初该<button runat="server">解决方案有效,但我立即遇到了需要具有CommandName属性的情况,HtmlButton控件没有该属性.看起来我将需要创建一个从Button继承的控件.
我需要做什么才能覆盖渲染方法并使其呈现我想要的东西?
UPDATE
DanHerbert的回复让我有兴趣再次寻找解决方案,所以我花了一些时间来研究它.
首先,有一种更容易的方法来重载TagName:
public ModernButton() : base(HtmlTextWriterTag.Button)
{
}
Run Code Online (Sandbox Code Playgroud)
Dan的解决方案存在的问题是标记的innerhtml被放置在value属性中,这会导致回发时出现验证错误.一个相关的问题是,即使你正确地渲染value属性,IE的<button>标签的braindead实现也会发布innerhtml 而不是值.因此,任何实现都需要覆盖AddAttributesToRender方法才能正确呈现value属性,并且还为IE提供某种解决方法,因此它不会完全搞砸回发.
如果要利用数据绑定控件的CommandName/CommandArgument属性,IE问题可能是不可克服的.希望有人可以为此建议解决方法.
我在渲染方面取得了进展:
这将呈现为<button>具有正确值的正确html ,但它不适用于ASP.Net PostBack系统.我已经写了一些我需要提供的Command事件,但它没有激发.
当用常规的asp:Button并排检查这个按钮时,它们看起来与我需要的差异相同.所以我不确定Command在这种情况下ASP.Net是如何连接事件的.
另一个问题是,不呈现嵌套的服务器控件(正如您可以使用ParseChildren(false)属性看到的那样).在渲染过程中将文字html文本注入控件非常容易,但是如何允许支持嵌套服务器控件呢?
有没有人知道确定Rails关联是否已被急切加载的方法?
我的情况:我有一个结果集,有时其中一个关联是急切加载的,有时它不是.如果它没有急切加载,那么我想使用ActiveRecord的查找查找关联.如果它是急切加载,我想使用检测.
例如,假设我的项目模型中有一个shipping_info对象的"has_many"数组.然后:
如果项目是急切加载的,最有效的负载是:
item.shipping_infos.detect { |si| si.region == "United States" }
Run Code Online (Sandbox Code Playgroud)
如果项目未加载,则最有效的加载是:
item.shipping_infos.where(region: "United States").first
Run Code Online (Sandbox Code Playgroud)
但除非我知道它是否是急切加载,否则我不知道要调用哪些代码来有效地获取记录.如果我在第一种方法没有急切加载时使用它,那么我必须查找超过必要的DB记录.如果我在急切加载时使用第二种方法,那么我的急切加载对象将被忽略.
我正在将构建在Rails应用程序中的一些逻辑重构为中间件,而我遇到的一个烦恼似乎是缺乏将它们放在何处的约定.
目前我已经确定了,app/middleware但我可以轻松地将其移至vendor/middleware或者vendor/plugins/middleware......
最大的问题是必须要求顶部的单个文件 config/environment.rb
require "app/middleware/system_message"
require "app/middleware/rack_backstage"
Run Code Online (Sandbox Code Playgroud)
或者我在线上得到未初始化的常量错误config.middleware.use.这可能会很快变得混乱.我宁愿将它隐藏在某个地方的初始化器中.
这个东西有传统的地方吗?
我正在寻找的具体答案是:我可以在哪里放置需求行,以便它们不会混乱environment.rb文件,但仍然在config.middleware.use调用之前加载?我尝试过的所有内容都会导致未初始化的常量错误.
更新:现在我们正在使用Rails 3.0,我像任何其他Rack应用程序一样对待Rails应用程序; 中间件的代码文件进入lib(或列出的宝石Gemfile)并且是必需的和加载的config.ru.
我试图克服Rails中动态表单字段的障碍 - 这似乎是框架无法正常处理的东西.我也在我的项目中使用jQuery.我安装了jRails,但我更愿意尽可能不显眼地编写AJAX代码.
我的表格相当复杂,两层或三层嵌套并不罕见.我遇到的问题是生成正确的表单ID,因为它们依赖于表单生成器上下文.我需要能够动态添加新字段或删除has_many关系中的现有记录,我完全不知所措.
到目前为止,我见过的每个例子都以这种或那种方式丑陋.Ryan Bates的教程需要RJS,这会在标记中产生一些非常难看的突出javascript,并且似乎是在嵌套属性之前编写的.我已经看到了一个带有不显眼的jQuery的示例的分支,但我只是不明白它在做什么,并且无法让它在我的项目中运行.
有人可以提供一个简单的例子来说明这是如何完成的吗?在尊重控制器的RESTful约定时,这是否可行?
Andy发布了一个删除现有记录的优秀示例,任何人都可以提供使用正确属性创建新字段的示例吗?我无法弄清楚如何使用嵌套表单执行此操作.
这样做是否有一种整洁的方式,而不是对冒号进行拆分并将每个部分乘以相关的数字来计算秒数?
我在控制器操作中有两个日期参数,如果它们是nil,或者解析失败,我想回退到默认值.
不幸的是,DateTime.strptime如果解析失败,它似乎抛出一个异常,这迫使我写下这个怪物:
starting = if params[:starting].present?
begin
DateTime.strptime(params[:starting], "%Y-%m-%d")
rescue
@meeting_range.first
end
else
@meeting_range.first
end
Run Code Online (Sandbox Code Playgroud)
感觉坏人.有没有办法用Ruby stdlib解析一个不需要begin...rescue块的日期?对于这种情况,慢性感觉有点矫枉过正.
我需要能够UNION使用ActiveRelation 链接任意数量的子选择.
我对ARel的实现有点困惑,因为它似乎假设UNION是二进制操作.
然而:
( select_statement_a ) UNION ( select_statement_b ) UNION ( select_statement_c )
Run Code Online (Sandbox Code Playgroud)
是有效的SQL.如果不做令人讨厌的字符串替换,这可能吗?
c# ×2
datetime ×2
ruby ×2
.net ×1
activerecord ×1
ajax ×1
asp.net ×1
class-design ×1
conventions ×1
forms ×1
html ×1
htmlbutton ×1
interface ×1
iteration ×1
javascript ×1
jquery ×1
middleware ×1
object ×1
oop ×1
parsing ×1
properties ×1
rack ×1
union ×1