我有一个名为'companies'的控制器,而不是每个公司的url用以下表示:id我想让url使用他们的:name,例如:url/company/microsoft而不是url/company/3.
在我的控制器中我假设我会
def show
@company = Company.find(params[:name])
end
Run Code Online (Sandbox Code Playgroud)
由于url中没有任何其他参数,我希望rails能理解:name引用了我公司模型中的:name列.我认为这里的魔法将在路线中,但我仍然坚持这一点.
我有一个表单,用户可以在其中输入链接,单击"添加链接"按钮,然后该链接(通过jQuery)作为隐藏字段添加到表单.问题是,当我提交表单时,它不是POST.这真的让我很困惑.问题是,如果我将隐藏字段硬编码到表单中,它会被发布,但我的功能由于某种原因不起作用.隐藏字段会被添加到我的表单中,因为我可以看到Firebug,但它只是没有发送POST数据.
需要注意的是,我在Javascript中使用一个数组来保存元素,直到提交表单为止,也会明确地发布它们以便用户查看他们添加的内容.我在元素的"name"字段上使用[]表示法,因为我希望链接在PHP中提供给数组.
这是链接创建,它被附加到我的表单:
function make_hidden_element_tag(item_type, item_content, item_id)
{
return '<input type="hidden" name="' + item_type + '[]" id="hidden_link_' + item_id + '" value="' + item_content + '"/>';
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么这可能不会发布.如上所述,任何与上述几乎完全相同的硬编码标签工作正常,只是这个标签不起作用.以下是我使用jquery将标记添加到表单的方法:
$('#link_td').append( make_hidden_element_tag('links', link, link_array.length - 1));
Run Code Online (Sandbox Code Playgroud)
我正在使用Kohana 3框架,虽然我不确定是否对此有任何影响,因为从HTML添加到页面并按下提交按钮时它实际上并没有做任何事情.
我有一个单一的数据库连接,我得到:
$ dbConnect = myDatabase :: getInstance();
这很容易.我的问题是在函数和类中使用此连接的最少修辞和合法方式是什么?将变量声明为global,将其传递给每个函数,和/或在每个函数中重新创建此变量似乎很愚蠢.还有另一个答案吗?
显然我是一个菜鸟,我可以用10种不同的方式解决这个问题,其中没有一个对我很有吸引力.如果我可以在任何函数中访问$ dbConnect变量而不需要将其声明为全局或传入它,那将会容易得多.我知道我可以将变量添加到$ _SERVER数组中...是否有问题这样做?这似乎有点不合适.
另一个快速问题:这样做是不好的做法:
$ result = myDatabase :: getInstance() - > query($ query);
从一个函数直接?
我知道ESC键确实代码完成,但有没有办法获得一个弹出窗口(我猜的工具提示),它显示了一段代码的所有可能选择?例如,在编写Javascript以获取可用操作列表时会很好.我用过的其他应用程序就像Coda一样.我想查看Textmate,但我很难找到这个缺失的功能,我觉得这很有价值,特别是作为一个相当新的程序员,他喜欢看看有哪些选项,因为它对我来说也是一个学习工具.我以为我找到了一个像我正在寻找的插件,Dialog2,但它似乎已经消失了,因为它本来是内置于从未发布过的TM2.
我已经对这个问题的答案进行了一些调查,并认为这是我的下一个最佳选择.谢谢.
我不能为我的生活弄清楚我做错了什么.看起来它应该很简单,因为我找不到其他人有这个问题,但我不知道通过javascript(jQuery)发送基本数据到PHP并解码它.为简单起见,这就是我所拥有的:
JAVASCRIPT
var json_data = { "name" : "john doe" };
$.ajax({
type: "POST",
url: "../bin/process.php",
dataType: "json",
data: json_data
});
Run Code Online (Sandbox Code Playgroud)
和我的PHP文件
$arr = json_decode("json_data", true);
$fp = fopen('data.txt', "w");
fwrite($fp, $arr['name']);
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
我正在写的文件最终没有任何内容.如果我这样做:
fwrite($fp, 'test');
Run Code Online (Sandbox Code Playgroud)
我得到一个带有单词test的文件,但无论我做什么,我都没有得到我发送的json数据.
有人可以分享A到Z的完整示例.感谢您的帮助.
本书The Well Grounded Rubyist声明您可以使用此send方法来检查object(ticket)是否响应用户输入:
if ticket.respond_to?(request)
puts ticket.send(request)
else
puts "No such information available"
end
Run Code Online (Sandbox Code Playgroud)
上面的代码和写作之间有什么区别:
if ticket.respond_to?(request)
puts ticket.request
else
puts "No such information available"
end
Run Code Online (Sandbox Code Playgroud)
如果ticket响应用户输入,为什么不直接使用点符号来调用它?