我有三个控制器都从ApplicationController
继承。 孩子控制器是:覆盖子控制器中父控制器的实例变量
HomeController
index
家庭控制器只有一个方法,index
,它只是呈现形式。
TemplatesController
templates
save_page_name
preview
的TemplatesController
有三种方法。 templates
列出所有模板并preview
打开所选模板的预览。 save_page_name
是从home#index
提交的表单的终点。
DesignsController
home
about
template#preview
呈现与含有design#home
一个iframe
的图。
DesignsController
中的每个方法都需要从表单中设置的值来获取数据。 (数据正在从API中提取。)
现在。我想为DesignController
创建一个全局可访问的变量。即我想让价值来自全球的形式。所以我把一些代码在父控制器
这里是我的代码:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :page_name
def page_name
@page_name = ''
end
end
,并打算在重写它template#save_page_name
:
def save_page_name
@page_name = params[:page_name]
test_page_name = PageName.new
test_page_name.name = @page_name
if test_page_name.save
redirect_to(controller: 'template', action: 'templates')
end
end
这是形式
<%= form_tag({controller: 'application', action: "save_page_name"}, class: "nifty_form") do%>
<%= text_field_tag :page_name %>
这是模板控制器
class TemplateController < ApplicationController
def templates
end
def preview
end
end
设计控制器
class DesignController < ApplicationController
def home
@info = @page_name //should be global var
render :template => "design/"+params[:template]+"/home"
end
end
你的问题是什么? – spickermann
@spickermann,首先感谢我的英语我试图从子类中覆盖父类的实例变量。 – Raaz
你有什么问题?有错误吗? – spickermann