我对Rails很新。
Q1。控制器和视图之间的路径是什么?
假设我有一个名为 store_controller 的控制器。我在该控制器中没有方法,但我有一个名为“list”的视图
然后,我可以调用localhost:3000 / store / list ...为什么我可以在控制器中没有列表操作的情况下调用它?
Q2。如果我在控制器中添加如下列表方法怎么办?如果我调用localhost:3000 / store / list,路由是什么?从控制器的列表方法,然后,查看?或从控制器查看第一个和列表方法?永远不会调用来自控制器的列表方法?
def list
logger.Write 'list in Controller'
end
根据我的测试,来自控制器的list方法永远不会被调用。我不知道为什么。我正在关注“使用Rails进行敏捷Web开发,第3版”一书,并且我坚持“任务C:购物车创建”。
Q3。如何在不使用帮助程序或没有该方法的任何模板文件的情况下从视图中调用控制器的方法?假设我在Controller中有一个名为DoSomething的方法。
def DoSomething
logger.Write 'd'
end
我可以从视图中调用此方法,如下所示吗?
<%= link_to "Do It", :action => "DoSomething" %>
根据我的测试,它不起作用。
编辑:实际上,视图可以通过Http Post调用控制器。假设我们在屏幕上看到的内容称为视图。如果你点击按钮,它将是http-post并将调用控制器。我的意思是从视图中调用控制器的方法..
Q4。如何在自定义日志文件中写入日志?如果我使用logger.Write,则所有日志都将写入development.log。我如何拥有自定义日志文件?
Q5。有没有办法像Ruby和Rails中的调度程序一样创建?如果我想创建类似调度程序或后端作业的东西,我应该使用Ruby还是Rails?比如每秒ping一个feed,如果有新的变化,那么获取数据并将它们插入数据库。
答案 0 :(得分:2)
这可能需要几个问题:P ...但它也是维基的良好基础。
Q1。 Rails使用约定 - 如果你有一个名为“list”的视图,rails足够聪明,就像存在一个列表方法一样。当然,由于没有方法,你将没有任何逻辑,但视图仍将被渲染。
Q2。 如果你添加一个列表方法,Rails现在会调用它。同样,Rails足够聪明,可以假设列表操作映射到列表视图。如果你想要calla不同的视图,你可以使用控制器的内置“渲染”方法。
Q3。 通常,您不应该从View调用控制器方法。它根本不是MVC模型的一部分。您可以将数据传递到视图中,您可以使用帮助程序来处理所需的任何视图特定方法。如果您有广泛的自定义逻辑,您可以开始将代码推送到模型中,甚至构建位于/ lib目录中的模块和类。
Q4。 有许多日志插件和扩展。我从来没有使用它们,因为我总是发现默认值已经足够了。
Q5。 这绝对是一个完全不同的问题。建议开始一个新的,但进行搜索,因为我知道这已经在SO之前得到了相当广泛的解决。有很多机制可以与Rails配合使用进行调度。