【问题标题】:Rendering page shows right page, but the URL doesn't include action渲染页面显示正确的页面,但 URL 不包含操作
【发布时间】:2017-02-22 08:20:26
【问题描述】:

谁能告诉我为什么在rails中渲染页面时,例如:

render 'controller/action'

网址显示

/domain/controller 

而不是

/domain/controller/action  

显示了正确的页面,但 url 只是控制器。

这是我的应用程序某处出现的错误吗?

例如,如果我这样做了:

render 'users/show'

然后会显示用户展示页面,但 url 将是:

/mydomain/users

而不是我所期望的:

/mydomain/users/show

【问题讨论】:

  • 我觉得你有点糊涂了,能把你的路由和控制器贴出来吗?
  • 肯定的,我上班时会做的。干杯。

标签: ruby-on-rails controller routes action render


【解决方案1】:

这是因为 Rails 广泛使用 REST 进行 URL 路由。

例如:

当您的应用程序收到GET users/1 的请求时,routes.rb 将被引用以找出对应的controlleraction。 假设,您的路由文件包含

get '/users/:id', to: 'users#show'

然后,您的请求将由users控制器的show操作处理。

有关在 rails 中路由的更多信息,请参阅Guide.

编辑:

回答您的问题,why doesn't the "show" action appear in the url, Rails 应用程序遵循 REST 架构约束,称为 RESTful 路由,它使用 HTTP 动词和 URL 组合定义到控制器操作

【讨论】:

  • 是的,但我的问题是,为什么“显示”动作没有出现在 url 中? url 是 /users 而不是 /users/show。对不起,如果我错过了那里的重点。
  • 显示操作的 url 应为/users/:id/users 如果您没有覆盖默认的 rails 资源路由,将呈现索引页面。
  • 我不确定您是否理解我的问题。如果我单击 users_show_path 链接,则 url 是 users/show。如果我呈现'users/show',那么 url 是 /users
猜你喜欢
  • 2011-03-19
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
相关资源
最近更新 更多