想象一下,在您的应用程序中有两个RESTful控制器(UsersController,OffersController)和一个PagesController(用于静态内容,如index,about等).
您定义了以下路由:
map.with_options :controller => 'pages' do |pages|
pages.root :action => 'index' # static home page
pages.about :action => 'about' # static about page
# maybe more static pages...
end
map.resources :users # RESTful UsersController
map.resources :posts # RESTful PostsController
Run Code Online (Sandbox Code Playgroud)
您的应用程序布局如下所示:
<html>
<head>
<title>Demo Application</title>
</head>
<body>
<ul id="menu">
<li>
<%= link_to 'Home', root_path %>
</li>
<li>
<%= link_to 'Offers', offers_path %>
<ul id="submenu>
<li><%= link_to 'Search', 'path/to/search' %></li>
<li>maybe more links...</li>
</ul>
</li>
<li>
<%= link_to 'About', about_path %> …Run Code Online (Sandbox Code Playgroud) 用一个例子可以更容易地解释这一点.我正试图找到一种方法将相对URL,例如"/Foo.aspx"或"〜/ Foo.aspx"转换为完整的URL,例如http://localhost/Foo.aspx.这样,当我部署到测试或阶段时,网站运行的域名不同,我将获得http://test/Foo.aspx和http://stage/Foo.aspx.
有任何想法吗?
自从Adobe AIR发布以来,我想知道为什么Java Web Start在过去没有引起更多的关注,对我而言似乎非常相似,但是Web启动可以使用很长时间.
这主要是因为Sun的营销不好,还是除了需要安装合适的JVM之外还有更多的技术问题?您是否有使用Web Start的糟糕经历?如果是的话,哪个?使用Web Start分发应用程序时,您有什么建议?
有人有将密钥值对存储在数据库中的经验吗?
我一直在使用这种类型的表:
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey varchar(32) NOT NULL,
itemvalue varchar(32) NOT NULL,
CONSTRAINT ct_primarykey PRIMARY KEY(itemid,itemkey)
)
Run Code Online (Sandbox Code Playgroud)
然后例如可以存在以下行:
itemid itemkey itemvalue
---------------- ------------- ------------
123 Colour Red
123 Size Medium
123 Fabric Cotton
Run Code Online (Sandbox Code Playgroud)
这种方案的问题是提取数据所需的SQL语法非常复杂.仅创建一系列键/值列会更好吗?
CREATE TABLE key_value_pairs (
itemid varchar(32) NOT NULL,
itemkey1 varchar(32) NOT NULL,
itemvalue1 varchar(32) NOT NULL,
itemkey2 varchar(32) NOT NULL,
itemvalue2 varchar(32) NOT NULL,
. . .etc . . .
)
Run Code Online (Sandbox Code Playgroud)
这将更容易,更快速地查询,但缺乏第一种方法的可扩展性.有什么建议?
假设您要生成标识符和字符串的匹配列表
enum
{
NAME_ONE,
NAME_TWO,
NAME_THREE
};
myFunction(NAME_ONE, "NAME_ONE");
myFunction(NAME_TWO, "NAME_TWO");
myFunction(NAME_THREE, "NAME_THREE");
Run Code Online (Sandbox Code Playgroud)
..没有重复自己,没有自动生成代码,使用C/C++宏
初步猜测:
您可以添加包含的#include文件
myDefine(NAME_ONE)
myDefine(NAME_TWO)
myDefine(NAME_THREE)
Run Code Online (Sandbox Code Playgroud)
然后使用它两次,如:
#define myDefine(a) a,
enum {
#include "definitions"
}
#undef myDefine
#define myDefine(a) myFunc(a, "a");
#include "definitions"
#undef myDefine
Run Code Online (Sandbox Code Playgroud)
但#define不允许你在字符串中放置参数?
令我惊讶的是,我刚刚发现MS Visual Studio 2003向上缺少C99 stdint.h.我确定他们有他们的理由,但有谁知道我可以在哪里下载副本?如果没有这个头文件,我就没有uint32_t等有用类型的定义.
假设我在存储库文件夹中有一组提交...
123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folder)
120 (90 changed files)
119 (115 changed files, 14 deleted files, 12 added files)
118 (113 changed files)
117 (10 changed files)
Run Code Online (Sandbox Code Playgroud)
我想获得一份工作副本,其中包括修订版117以后的所有更改,但不包括修订版118和120的更改.
编辑:为了使问题更清楚,我想撤消在118和120中所做的更改,同时保留所有其他更改.该文件夹包含数百个子文件夹中的数千个文件.
实现这一目标的最佳方法是什么?
得益于Bruno和Bert,答案就是命令(在这种情况下,在执行完全合并后删除120)
svn merge -c -120 .
Run Code Online (Sandbox Code Playgroud)
请注意,必须使用前导减号指定修订号.'-120'不是'120'
我使用P/Invoke从我的项目调用非.NET dll,这意味着.dll必须始终存在于.exe的目录中.
有没有办法告诉Visual Studio这个依赖项,以便它在编译时自动将.dll复制到输出目录,并在设置中自动包含.dll?或者我必须手动执行此操作吗?
我想要一个名为same_url的方法?如果传入的URL相等,则返回true.传入的URL可能是params选项hash或strings.
same_url?({:controller => :foo, :action => :bar}, "http://www.example.com/foo/bar") # => true
Run Code Online (Sandbox Code Playgroud)
Rails框架帮助器current_page?似乎是一个很好的起点,但我想传递任意数量的URL.
作为额外的奖励如果可以传入从比较中排除的参数的散列,那将是很好的.因此方法调用可能如下所示:
same_url?(projects_path(:page => 2), "projects?page=3", :excluding => :page) # => true
Run Code Online (Sandbox Code Playgroud) 我有一个2.4 MB的XML文件,从Microsoft Project导出(嘿,我是受害者!),我要求我提取重新呈现的某些细节.忽略请求的智能或其他方面,我应该首先从Ruby的角度尝试哪个库?
我知道以下内容(没有特别的顺序):
我更喜欢打包成Ruby宝石的东西,我怀疑Chilkat库不是.
性能不是一个主要问题 - 我不认为每天需要运行一次以上(每周一次更有可能).我对那些与XML相关的东西一样容易使用的东西更感兴趣.
编辑:我尝试了宝石的:
hpricot是一个国家英里,最简单.例如,要在此XML中提取SaveVersion标记的内容(保存在名为'test.xml'的文件中)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Project xmlns="http://schemas.microsoft.com/project">
<SaveVersion>12</SaveVersion>
</Project>
Run Code Online (Sandbox Code Playgroud)
采取这样的事情:
doc = Hpricot.XML(open('test.xml'))
version = (doc/:Project/:SaveVersion).first.inner_html
Run Code Online (Sandbox Code Playgroud)
hpricot似乎相对不关心命名空间,在这个例子中很好:只有一个,但可能是复杂文档的问题.由于hpricot也非常慢,我宁愿想象这将是一个解决自己的问题.
libxml-ruby的速度提高了一个数量级,了解命名空间(我需要花费几个小时来计算出来)并且完全接近XML金属 - XPath查询和所有其他的东西都在那里.如果像我一样,只有在极端胁迫的情况下才能打开XML文档,这不一定是好事.帮助器模块主要用于提供有效处理默认命名空间的示例.这大致是我最终得到的结论(我不以任何方式断言它的美丽,正确性或其他价值,它就在我现在的位置):
xml_parser = XML::Parser.new
xml_parser.string = File.read(path)
doc = xml_parser.parse
@root = doc.root
@scopes = { :in_node => '', :in_root => '/', :in_doc => '//' }
@ns_prefix = 'p'
@ns = "#{@ns_prefix}:#{@root.namespace[0].href}"
version = @root.find_first(xpath_qry("Project/SaveVersion", :in_root), @ns).content.to_i
def xpath_qry(tags, scope = :in_node)
"#{@scopes[scope]}" + tags.split(/\//).collect{ …Run Code Online (Sandbox Code Playgroud)