我有一个链接,我希望用户按,它将转到缺省对象内的自定义视图(new.worker.html.erb)我该怎么做?
我目前在我的控制器中有一个名为render的link_to方法,用于检查用户会话的staff_type以决定用户应该重定向到哪里
编辑:正如评论者所指出的,答案是在link_to中调用相关控制器到你的视图,然后在控制器内执行正确渲染的检查,如下所示:
if session[:user].staff_type == 3
render "new_worker"
指向相关视图中的new_worker视图
答案 0 :(得分:0)
根本不清楚,给我们更多信息什么是缺席,staff_type,worker?你有所有这些东西的路线,资源和控制器吗?它们是通过关系联系起来的吗?
基本答案是:使用rails,为了渲染模板,您需要一个控制器和一个访问控制器的路径。然后快速redirect_to new_worker_path
应该工作
编辑: 路由指向动作,这些动作呈现视图(或其他http响应,例如redirect_to)。
Rails(我猜你的是2.3.11),是一个REST,面向资源的框架。恕我直言,你应该保留这个,并重定向到new_absence_path,如果你想为staff_type设置一个不同的模板,你可以在链接:type=>'worker'
中添加一个参数,并在你的控制器中使用它来呈现一个特定的模板。 p>
最佳实践方式是创建路线和动作。 for rails 2.3.11
map.resources :staff, :member => {:new_worker => :get}
然后在你的员工控制器中定义:
def new_worker
...
render 'new.worker'
end
答案 1 :(得分:0)
好的,不同的员工是不同的员工类型,对吧?工人就是其中之一?
我可能会做的是在你的员工控制器中,在show中 - 这是我假设你想要渲染一个不同的模板,当你在看一个特定的staff_type的特定人时 - 是找到工作人员,然后查看他们的:staff_type属性,并做一个if或者一个案例来渲染相应的部分。
def show
@staff = Staff.find(params[:id])
case @staff.staff_type
when "worker"
render :action => "show", :layout => "worker"
else
#other options
end
end
上面为show动作呈现(传递这些变量),但使用名为worker的自定义布局。
或者,我建议使用相同的骨架,然后使用此渲染为每个不同的人员类型渲染不同的部分,而不是上面的渲染:
render :partial => "worker", :object => @staff
在这种情况下,视图可能会被调用_worker.rhtml
请参阅此处的信息:http://rails.rubyonrails.org/classes/ActionController/Base.html#M000464
您可以在任何控制器操作中使用上述内容。但是您需要在控制器中执行此操作,或者重新组织您的资源。