rails2.1在Controller中手工增加方法的问题(初学者的问题)

问题描述

接照《Rolling with Ruby on Rails》示例来做的。执行ruby scriptgenerate scaffold recipe title:string instructions:string description:string date:date后,在生成的recipes_controller.rb文件中增加一list方法,URL中http://localhost:3000/recipes/list访问时,提示如下信息ActiveRecord::RecordNotFound in RecipesController#show Couldn't find Recipe with ID=listRAILS_ROOT: E:/ruby/sites/myapp它可能无法与“http://localhost:3000/recipes/7”即显示某一条记录详细情况的URL区分开。难道用ruby scriptgenerate scaffold 生成的controller中就不能再增加其它方法了吗?如果能的话,怎么才能增加上呢?这个问题郁闷了我好久,一直没找到合适的资料说明。盼高手出手相助,或者推荐相关的资料(我用的是ruby 1.8.6,rails2.1)

解决方案

我再来补充一下,以上的方法是可行的,但是在rails2.1中,有更好的方法来实现这个。map.resources :managers, :member => { }, :collection => { :login => :get }它的意思是指明除了controller中自动生成的7个方法外,要加上自己的方法,就用这个来实现,member和collection相信你看名字就知道是什么意思了吧。
解决方案二:
在Rails2.1中,新增一个action有些麻烦,你得自己配置一下config/routes.rb路由文件,举例如下:我用generate scaffold生成了Manager,现在我想自己在managers_controller.rb中新增一个action,叫login,那么请在routes.rb中找到map.resources :managers在它的前面加上map.connect("managers/login", :controller => 'managers', :action => "login")然后,重启web服务器,再访问http://localhost:3000/managers/login应该没有问题了。

时间: 2024-12-23 10:47:12

rails2.1在Controller中手工增加方法的问题(初学者的问题)的相关文章

spring mvc 如何在Controller类的每个方法执行前 调用我定义的一个方法

问题描述 在用spring mvc做一个项目 我想在@Controller类的每个方法@RequestMapping前都调用我定义的一个方法 该怎么弄? 我现在是这么弄的 手动在方法的第一行调用我定义的那方法 这样 太麻烦 有没有更好的方法呢 一下是我的代码@Controllerpublic class ModuleAction extends BaseAction {@Autowiredprivate ModuleMgr manager;@RequestMapping("/systemMgr/

controller中获得hibernate的session方法

问题描述 controller中获得hibernate的session方法 环境:Spring+Hibernate事务由org.springframework.orm.hibernate4.HibernateTransactionManager管理需求是这样的,带有@Transactional注解的Service类中有两个方法:1. check()----用来验证数据2. insert()----用来插入数据我想在controller方法中显式声明一个事物并把check()和insert()放入

Symfony2实现在controller中获取url的方法_php实例

本文实例讲述了Symfony2实现在controller中获取url的方法.分享给大家供大家参考,具体如下: // 假设当前URL地址是http://192.168.1.100/demo/web/app_dev.php/m/index $request = $this->getRequest(); // http or https 此处为http $request->getScheme(); // 192.168.1.100 $request->getHttpHost(); // htt

spring mvc-springMVC controller中方法接收参数问题,怎么接收json对象

问题描述 springMVC controller中方法接收参数问题,怎么接收json对象 后台配置及代码 <bean id=""paramMethodResolver"" class=""org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver""> <property name=""param

spring mvc aop获取controller中的方法中的参数名称

问题描述 spring mvc aop获取controller中的方法中的参数名称 //配置切入点,该方法无方法体,主要为方便同类中其他方法使用此处配置的切入点 //"execution(* com.nong.aop.*.controller..*.*(..))" /*@Pointcut("execution(* com.nong.aop.*.controller.*(..))") public void aspect(){} // 配置前置通知,使用在方法aspe

关于jquery中动态增加select,事件无效的快速解决方法_jquery

近来做项目,用的jquery1.6.2库,当动态增加div 及select时,事件却不起作用. 查了一些资料,发现bind事件:向匹配元素附加一个或更多事件处理器.而live事件:为当前或未来的匹配元素添加一个或多个事件处理器. 其资料如下: [bind和live的区别] live方法其实是bind方法的变种,其基本功能就同bind方法的功能是一样的,都是为一个元素绑定某个事件,但是bind方法只能给当前存在的元素绑定事件,对于事后采用JS等方式新生成的元素无效,而live方法则正好弥补了bin

常见木马的手工清除方法_网络冲浪

常见木马的手工清除方法 1. 冰河v1.1 v2.2 这是国产最好的木马 作者:黄鑫 清除木马v1.1 打开注册表Regedit 点击目录至: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun 查找以下的两个路径,并删除 " C:windowssystem kernel32.exe" " C:windowssystem sysexplr.exe" 关闭Regedit 重新启动到MSDOS方式 删除

sql server 2005中新增加的try catch学习

server sql server 2005中新增加的try catch,可以很容易捕捉异常了,今天大概学习看了下,归纳下要点如下 基本用法BEGIN TRY     {  sql_statement |  statement_block  }END TRYBEGIN CATCH     {  sql_statement |  statement_block }END CATCH,和普通语言的异常处理用法差不多,但要注意的是,SQL SERVER只捕捉那些不是严重的异常,当比如数据库不能连接等这

C#3.0 中使用扩展方法来扩展接口

有关扩展方法的一些知识点请参看我的前篇博客:C#3.0 中的扩展方法 (Extension Methods)前篇博客中我重点介绍了两个特殊场景:1.扩展方法跟原来类的方法重名时候的处理逻辑2.扩展方法的嵌套现在我们来看扩展方法使用的第三个场景:使用扩展方法来扩展接口 应用场景举例:我们有时候会发现最初定义的一个接口,在现在环境下,这个接口需要再增加一个函数.有了扩展方法后,我们在这种情况下又多了一种实现的选择.下面以代码来说明这个问题:namespace Hongjun.Guo{interfac