【问题标题】:Rails rendering, it doesn't show the same url as beforeRails 渲染,它没有显示与以前相同的 url
【发布时间】:2013-05-02 07:55:14
【问题描述】:

我在渲染工作时遇到问题,我的路径是

/dashboard/models/new

如果验证失败,它应该使用

呈现该页面
render :new

,但 url 更改为

/models/new

没有适当的布局。使用

render :new, :layout => 'dashboard'

恢复布局,但不恢复路径。

我的路线.rb

match '/dashboard' => 'home#dashboard', as: :dashboard_home
scope '/dashboard' do
    resources :models, only: :new
end
root :to => 'home#index'

任何人都可以帮助我吗? 提前致谢


我的控制器有很多代码,造成这个的部分是:

if model.save
    redirect_to "/dashboard/#{@model_type.to_s.downcase}s"
else
    flash.now[:error] = model.error.messages[:title]
    render :new, :layout => "dashboard"
end

【问题讨论】:

  • 你能发布你的控制器代码吗?
  • @Alex,我已经用我的那部分代码编辑了它

标签: ruby-on-rails rendering


【解决方案1】:

您可以尝试使用命名空间。

你的路由文件看起来像这样

namespace :dashboard do
  resources :models, :only => :new
end

在 form_for 标签中,你应该像这样向它发送命名空间

<%= form_for [:dashboard, @model] do |f| %>

不确定这是否能回答您的问题。

【讨论】:

  • 我试过你的代码Boat,但我无法让它工作,可能是我自己缺乏理解。它说没有名为 Dashboard 的常量。
  • 对不起,我忘了告诉你,你的控制器应该在 controllers/dashboard/models_controller.rb 并命名为 Dashboard::ModelsController
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多