新手问题 render @modelInstance 和 render 'controller/view' 似乎在 partial 下表现不一样

jicheng1014 · 2014年11月27日 · 1592 次阅读

今天在使用partial views的时候出现了一个问题,不知道我总结的是不是对的,还请各位指点

起因

在某个action当中,我需要使用另外一个controller的action对应的view,我的代码如下所示

# police_controller 

def get_out_record_list
  police = Police.find_by_uid(params["device_uid"])
  @out_records = police.live_out_records
  render "out_records/index"
  #render @out_records
end

之后实际上out_records/index 的view 当中,使用了partial 代码如下所示

json.array!(@out_records) do |out_record|
  json.partial! 'out_record' , out_record: out_record
end

此时我的_out_record.json.jbuilder 这个是放在views/out_records/这个目录里的

但是此时程序就会报错,说在views/police/ 中找不到_out_record 这个模板文件

但是一旦将police_controller 修改一下

# police_controller 

def get_out_record_list
  police = Police.find_by_uid(params["device_uid"])
  @out_records = police.live_out_records
  #render "out_records/index"
  render @out_records
end

程序就正常运行了

猜想

  • 当render 接model_instance 相关的时候, template 的默认路径是model_instance 的view路径
  • 当render 指定的时模板路径 时,template的默认路径还是原来的view 路径

我查看了下guide.ruby-china.org 里面似乎没有交代这个,还是我读书不仔细没看到这个说明

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册