Rails 遇到一个奇怪的问题,controller 继承会导致的。以前没留意过,希望大神们帮解惑,谢谢!

lengcb · 2017年03月03日 · 最后由 babyhai 回复于 2017年03月06日 · 2031 次阅读

我建了一个 controller,叫 ProjectController 继承与 BaseController。

在 BaseController 里面,并没有 show 这个 action,但是在 views 里面有一个 base/show.html.erb 文件。

然后我在 ProjectController 里面建了一个 show 的 action,views 里面还没有 project/show.html.erb 文件,我访问 project 的 show 页面时本以为会报找不到页面的错误,但没想到竟然没报错,而是将 base/show.html.erb页面给我渲染过来了。

rails 本来就是这样子的吗?以前没留意。

你可以看 view path 查找路径的数组,找不到时,默认会找父类的对应路径。

kgen 回复

谢谢

如果你是用 resources 创建的 controller 会默认生成 7 个路由的 index show edit new update create destroy view 是需要手动创建的

创建 controller 有两种方式 第一中是配置路由文件 再手动创建 views controller 第二种方式是 rails g controller demo index demo 是 controller index 是对应的 动作


上面的是创建的文件 可以看清楚 只有一个跟路由

这种方式创建的是 root_path 是跟路由 不过你还需要修改路由文件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号