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

lengcb · March 03, 2017 · Last by babyhai replied at March 06, 2017 · 2031 hits

我建了一个 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 查找路径的数组,找不到时,默认会找父类的对应路径。

Reply to 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 是跟路由 不过你还需要修改路由文件

You need to Sign in before reply, if you don't have an account, please Sign up first.