假如 有三个模型 news,jobs,apps,我想让这三个模型的 show 页面都链接到 news 模型的 show 页面里,或者其他的一个特定的 show 页面里怎么做?
http://guides.rubyonrails.org/layouts_and_rendering.html#using-render
2.2.3 Rendering an Action’s Template from Another Controller
What if you want to render a template from an entirely different controller from the one that contains the action code? You can also do that with render, which accepts the full path (relative to app/views) of the template to render. For example, if you’re running code in an AdminProductsController that lives in app/controllers/admin, you can render the results of an action to a template in app/views/products this way:
render 'products/show'
#3 楼 @tech_blogbin #2 楼 @fresh_fish #1 楼 @hooopo 其实我的意思是想在控制器里面 用一个变量动态的获得三个模型, 比如 我现在的代码是: '''ruby def show @frontpages_show = Backstage::News.find(params[:id]) //想定义一个变量来获得 Backstage::News,Backstage::Jobs,Backstage::Customers //然后直接改写上一句话 @frontpages_show = ‘变量’.find(params[:id]) //但是我不知道这个变量怎么弄,用什么函数来获得类似 Backstage::News 的东西。 respond_to do |format| format.html # show.html.erb format.json { render json: @frontpages_show } end end '''
类是对象,可以直接变量赋值 back_stage_class = Backstage::News #或者通过定义方法根据情况返回其它 Class @frontpages_show = back_stage_class.find(params[:id])
#5 楼 @tech_blogbin back_stage_class = Backstage::News #这样的一个 class 名字有没有一个函数来获得
class_name = params[:class_name] back_stage_class = eval(class_name)
不过这个需求好怪.....问题描述也很乱
按照前面几楼的做法,先把 show 页面做成一个 template,然后使用 render 渲染是最好的吧。或者也可以考虑下 render 的 action 参数
看了半天,没看懂楼主问啥。。。 action 里你就 @record = New.new
@record = Job.new
view 里你就统一用@record来接收,然后使用,@record.title @record.class就能获得对于的 Class,而且 form 表单你传实例@record,它自己能解析式哪个类对象,提交到对应的 action 。。。 至少偶们以前公司的代码都是这样约定的,页面里单个对象用@record,对象列表用@records 就是为了 view 的共用,如果这个 view 里有其他类实例,就除了主体对象用@record,其他用自己的类表示,比如@job