2012-07-20 33 views
0

即时通讯必须使用Ruby而不是PHP,需要告诉红宝石如果登录使用使用loggedin.rhtml如果不使用notloggedin.rhtml。但是这些文件只包含页面的一部分菜单,所以它像php include函数一样但是有if语句红宝石如果登录使用。 loggedin.rhtml其他使用notloggedin.rhtml

+1

无论登录问题如何,Ruby“使用PHP”开始?为什么你需要混合这两个? – deceze 2012-07-20 07:36:09

+0

认为是这样的,如果我通过ruby调用它并继续使用ruby并且drop php,那么可以使用ruby写这个命令吗? – david 2012-07-20 07:42:41

+0

是否可以写入*如果登录,做A,否则在Ruby中做B *?我当然希望如此。 – deceze 2012-07-20 07:57:00

回答

1

Ruby可以执行shell脚本,PHP也不例外。

if logged_in? 
    output = `this.php` 
else 
    output = `that.php` 
end 

这将既可以执行this.phpthat.php并存储在output脚本输出,假设脚本有execute permission和适当shebang

#!/usr/bin/env php 
<?php 
    echo "hello world"; 
?> 

注意,这就像using PHP from the command line,脚本不要”无法访问Rails环境中的任何对象,即不能使用像$_REQUEST$_SESSION这样的变量。如果您需要脚本中的任何数据,则必须将其作为参数明确传递。

+0

好吧,让坚持红宝石...我有一个页面和一个基本的菜单div在左侧,我已经放在一个新的notlogged.rhtml。并为用户登录时创建了第二个菜单loggedin.rhtml,因此如果登录或不登录,页面将加载相关(模板页面) – david 2012-07-20 08:31:18