首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >呈现html.erb文件时未定义的方法‘`formats’

呈现html.erb文件时未定义的方法‘`formats’
EN

Stack Overflow用户
提问于 2011-05-10 15:08:07
回答 2查看 2K关注 0票数 1

我使用的是Rails 3.0.3和ruby 1.8.7

我想渲染materials/change_prize.js.erb文件中的/materials/change_prize.html.erb。

change_prize.js.erb:

代码语言:javascript
运行
复制
$("#content").html("<%= escape_javascript(render(:action => 'materials/change_prize.html.erb')) %>");  

材质控制器:

代码语言:javascript
运行
复制
  def change_prize
    @material = Material.find(params[:id])    

    respond_to do |format|   
      format.js
      format.html
    end
  end  

routes.rb:

代码语言:javascript
运行
复制
 resources :materials do
    member do
      get 'change_prize'  
      post 'change_prize'  
    end  
  end

但是当我加载js文件时,我得到了这个错误:

代码语言:javascript
运行
复制
undefined method `formats' for nil:NilClass

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-10 15:17:31

您需要使用:partial not :action

代码语言:javascript
运行
复制
<%= escape_javascript(render :partial => "materials/change_prize", :locals => { :xxxx => @xxxx }) %>

注:xxxx是指需要将对象传递给部分

票数 4
EN

Stack Overflow用户

发布于 2011-05-10 16:19:13

分音必须以下划线开头。因此,将文件名重命名为"materials/change_prize.html.erb“,将其重命名为"materials/_change_prize.html.erb”。但是,请注意,当通过render调用调用它时,引用的文件不带下划线。

代码语言:javascript
运行
复制
$("#content").html("<%= escape_javascript(render(:action => 'materials/change_prize.html.erb')) %>");

文件名: app/views/materials/_change_prize.html.erb

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5946398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档