问题列表 - 第39284页

Rails 3 - 渴望加载条件

好的,我对这一点感到非常难过.我正在尝试构建按类别组织的已发布网页的菜单.

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_pa​​ges,没有已发布页面的子类别.例如:

- Parent …
Run Code Online (Sandbox Code Playgroud)

mysql ruby-on-rails rails-activerecord

10
推荐指数
1
解决办法
8041
查看次数

PHP:如何确定浏览器是否支持PHP中的javascript?

我正在构建一个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的用户将看到主页.

再次感谢你.我认为这是非常简单和优雅的解决方案.如果您有任何进一步的建议,请发表评论或其他答案.

javascript php ajax deep-linking

5
推荐指数
1
解决办法
2779
查看次数

boost::program_options - 它是否对命令行选项进行精确的字符串匹配?

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

5
推荐指数
1
解决办法
1371
查看次数

emacs,搜索,复制一些文本,然后返回搜索点?

我正在emacs的文本中向后搜索,然后我移动点并进行修改或复制,但是之后我可以返回搜索点还是仍然需要搜索该点周围的文本?

最好,

emacs

7
推荐指数
2
解决办法
1198
查看次数

如何将jQuery FLOT Graph保存为.png或其他图像格式?

我正在为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)

javascript jquery graph flot

22
推荐指数
1
解决办法
2万
查看次数

如何停止位置经理?

不知道为什么,但有时候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)

一些想法,一些建议,我做错了什么?!

gps android locationmanager

33
推荐指数
4
解决办法
4万
查看次数

17
推荐指数
1
解决办法
4844
查看次数

如何将字符串转换为流?

我想解析一些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)

c# stream datacontractserializer windows-phone-7

1
推荐指数
1
解决办法
2082
查看次数

在java中评估字符串上的xpath并返回结果字符串的简单方法是什么

一个简单问题需要一个简单的答案.

例如:

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.

显然,有很多方法可以实现,但大多数人似乎非常冗长.

我缺少的任何简单方法/库可以实现这一目标吗?

对于返回多个节点的情况,我只想要字符串表示.

java xml xpath

19
推荐指数
2
解决办法
2万
查看次数

在SQL中不是条件

任何人都可以告诉我两列中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)

sql ms-access

9
推荐指数
2
解决办法
7万
查看次数