好的,我对这一点感到非常难过.我正在尝试构建按类别组织的已发布网页的菜单.
Category.rb:
belongs_to :parent, :class_name => "Category", :foreign_key => "parent_id"
has_many :children, :class_name => "Category", :foreign_key => "parent_id"
has_many :pages, :documents, :galleries
Run Code Online (Sandbox Code Playgroud)
Page.rb
belongs_to :category
Run Code Online (Sandbox Code Playgroud)
Page模型也有:is_published,所以我也试图对它进行过滤.我不愿意发布我的微弱查询尝试,但除了乞求更聪明的人之外,没有其他解决方案:
(自我是@current_website)
self.categories.includes(:children, :pages).where('pages.is_published = 1')
Run Code Online (Sandbox Code Playgroud)
这主要返回我需要的内容,但不返回没有发布页面的父类别.例如,如果我有:
Parent Category
- Published Page
- Child Category
-- Published Page
Run Code Online (Sandbox Code Playgroud)
失败的地方是我父母没有发布的页面,如下所示:
Parent Category
- Child Category
-- Published Page
- Child Category
-- Published Page
Run Code Online (Sandbox Code Playgroud)
在此先感谢任何帮助.我正在尽可能多地学习有关查询的内容,但我在这方面已经反对了.
更新:实现KandadaBoggu的建议已经产生了更好的结果,这被添加到Category.rb
has_many :published_pages, :class_name => "Page",
:conditions => {:is_published => true}
Run Code Online (Sandbox Code Playgroud)
但是,使用以下内容时:
self.categories.where(:parent_id => nil).includes({:children => :published_pages},
:published_pages)
Run Code Online (Sandbox Code Playgroud)
我得到了我需要的结果,但我也得到了空的父类别(没有published_pages,没有已发布页面的子类别.例如:
- Parent …Run Code Online (Sandbox Code Playgroud) 我正在构建一个AJAX深度链接的站点.
如果用户尝试使用Javascript不支持的浏览器访问该站点或者它是搜索爬虫,我希望PHP加载页面的所有HTML代码.基本上PHP将返回整个页面.
相反,当用户尝试使用支持Javascript的浏览器访问该站点时,我希望PHP只返回模板代码,让Javascript(AJAX)处理剩下的事情.基本上PHP只会加载设计元素,让Javascript用内容填充它们.
我查看了PHP的get_browser()功能,但它似乎不是一个可靠的工具.什么是行业的做法,看看浏览器是否支持Javascript,或者它是使用PHP的搜索爬虫?
背景:
为什么我希望该网站有此行为.
由于我只想通过加载地址来加载主页:example.com,它不向PHP发送任何查询,PHP返回主页的HTML代码.但是,当用户尝试加载以下页面时,这会导致问题:example.com#foo.因此,对于此示例,PHP将返回主页,并且一旦加载主页,Javascript(AJAX)将更改内容以便它显示正确的内容#foo.这将使用户看到主页,因此加载时间将变慢并且用户体验将不会那么好.但是,如果我的PHP脚本可以弄清楚,如果使用Javascript支持的浏览器试图加载页面,它将只返回网站的模板,该模板没有内容)并且javascript将使用内容填充该模板应该为#foo显示.另一方面,如果Javascript非分离浏览器或爬虫将尝试访问该页面example.com#foo,则将返回主页.
我正在使用SWFaddress(http://www.asual.com/swfaddress/)库进行深层链接.
编辑
感谢你们.我以前没想过<noscript></noscript>用过.
这是我决定做的.PHP默认情况下会加载诸如example.com或之前的页面example.com#foo(example.com从PHP的角度来看基本上是相同的,因为定义的片段不会发送到服务器)空白(只是可视化模板),<noscript>主页内容中包含标签.这样,使用javascript的用户将无法看到主页,AJAX将根据#foo片段填充页面内容.另一方面,搜索爬虫和没有javascript的用户将看到主页.
再次感谢你.我认为这是非常简单和优雅的解决方案.如果您有任何进一步的建议,请发表评论或其他答案.
boost::program_options 的 options_description 匹配的完成方式似乎存在问题。
int main(int argc, char* argv[])
{
boost::program_options::options_description desc("CmdLine utility");
desc.add_options()
("hel", "hel message")
("help", "produce help message")
("helps","helps message")
;
boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::parse_command_line(argc, argv,desc), vm);
boost::program_options::notify(vm);
if(vm.count("help")) {
std::cout << desc << std::endl;
}
if(vm.count("helps")) {
std::cout << "helps..." << std::endl;
}
if(vm.count("hel")) {
std::cout << "hel..." << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出 -
C:\code>cmd.exe --helps
helps...
C:\code>cmd.exe --help
helps...
C:\code>cmd.exe --hel
helps...
Run Code Online (Sandbox Code Playgroud)
如果我更改使用 call 添加选项的顺序,输出会发生变化add_options()。另外,program_options 似乎没有进行完整的命令字符串匹配,因此即使您输入选项的子字符串,它也会将其视为有效选项,而不进行完整的字符串比较。如果这是 boost::program_options 功能,是否有任何方法可以强制它进行精确的字符串匹配,而不是使用子字符串匹配?(我使用的是Boost版本1.42)
c++ windows boost command-line-arguments boost-program-options
我正在emacs的文本中向后搜索,然后我移动点并进行修改或复制,但是之后我可以返回搜索点还是仍然需要搜索该点周围的文本?
最好,
我正在为Jquery使用一个名为FLOT的插件http://code.google.com/p/flot/
渲染图形后,我希望客户端能够将图形保存到文件中以供日后使用.在不要求客户下载某些工具或图像捕获设备的情况下,如何做到这一点的任何想法?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en">
<head>
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Graph</title>
<link href="layout.css" rel="stylesheet" type="text/css"></link>
<!--[if IE]><script language="javascript" type="text/javascript" src="lib/flot/excanvas.min.js"></script><![endif]-->
<script language="javascript" type="text/javascript" src="lib/canvas2image/base64.js"></script>
<script language="javascript" type="text/javascript" src="lib/canvas2image/canvas2image.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.js"></script>
<script language="javascript" type="text/javascript" src="lib/gChart/jquery.gchart.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.selection.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.crosshair.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.navigate.js"></script>
<style>
</style>
</head>
<body>
<div id="placeholder" style="width:1000px;height:400px;"></div>
<div id="test" style="display: none; background: #ff0; padding: 5px; border: 1px …Run Code Online (Sandbox Code Playgroud) 不知道为什么,但有时候LOCManager在关闭应用程序后仍然可以工作.
我在一个Activity中调用onCreate-Methode中的startGPS()(只有一个,我称之为StartActivity).
protected void startGPS(){
try {
lmanager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
lmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
} catch(Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
如果此活动将被销毁(因此,当应用程序将关闭时),我调用endGPS()
public void endGPS(){
try {
lmanager.removeUpdates(this);
lmanager=null;
} catch(Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
一些想法,一些建议,我做错了什么?!
我想解析一些JSON:
void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(e.Result)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(STMsgObj));
STMsgObj[] messages = (STMsgObj[])serializer.ReadObject(stream);
foreach(STMsgObj aMsg in messages){
MessageBox.Show(aMsg.body, "Data Passed", MessageBoxButton.OK);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何将e.Result转换为流?
例外:
System.InvalidCastException was unhandled
Message=InvalidCastException
StackTrace:
at StockTwits.ViewModels.StreamPage.webClient_DownloadStringCompleted(Object sender, DownloadStringCompletedEventArgs e)
at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)
at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, …Run Code Online (Sandbox Code Playgroud) 一个简单问题需要一个简单的答案.
例如:
String xml = "<car><manufacturer>toyota</manufacturer></car>";
String xpath = "/car/manufacturer";
assertEquals("toyota",evaluate(xml, xpath));
Run Code Online (Sandbox Code Playgroud)
如何以简单易读的方式编写evaluate方法,该方法适用于任何给定的格式良好的xml和xpath.
显然,有很多方法可以实现,但大多数人似乎非常冗长.
我缺少的任何简单方法/库可以实现这一目标吗?
对于返回多个节点的情况,我只想要字符串表示.
任何人都可以告诉我两列中SQL的NOT IN条件的确切语法.
这是我在VBA中编写的查询.
strNewSql = "SELECT distinct(tblRevRelLog_Detail.PartNumber), tblRevRelLog_Detail.ChangeLevel, tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"
strNewSql = strNewSql & " WHERE (tblEventLog.PartNumber) Not In(SELECT tblEventLog.PartNumber FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber = tblRevRelLog_Detail.RevRelTrackingNumber;"
Run Code Online (Sandbox Code Playgroud)
我想改变这个子查询,它应该适用于两列的组合,如下所示:
strNewSql = "SELECT tblRevRelLog_Detail.PartNumber, tblRevRelLog_Detail.ChangeLevel, tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"
strNewSql = strNewSql & " WHERE (((tblEventLog.PartNumber, tblEventLog.PartNumberChgLvl) Not In(SELECT tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl FROM tblEventLog WHERE tblEventLog.EventTypeSelected …Run Code Online (Sandbox Code Playgroud)