2

我正在尝试使用位于 /app/views/users/ 中的 create.js.erb 模板,但出现以下错误:

Template is missing
Missing template users/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/home/tim/fairym/app/views" 

我的控制器动作,我基于以下 railscast: http: //railscasts.com/episodes/381-jquery-file-upload

  def create   
    @user = User.create(params[:user])
  end

这里有什么问题?

4

3 回答 3

3

它不需要一个 js 文件。在您的方法中添加一个respond_to块:

def create
  @user = User.create(params[:user])

  respond_to do |format|
    format.js
    # add more 'format' calls for any other formats this method should ever respond to.
  end
end
于 2012-10-25T18:49:39.983 回答
2

我知道这已经得到解答,但我遇到了同样的问题和错误消息,并通过在我的表单中添加“remote:true”来解决它。每当在表单上提交 ajax 调用时,您都需要这个。

我知道这对大多数人来说是显而易见的,但对于像我这样经常忘记这些事情的新手来说却不是。

例如:

<%= form_for([@club, @club_order], remote: true) do |f|  %>

希望这可以帮助。

于 2013-01-07T19:41:44.117 回答
1

它找不到您的模板的原因是,如果您注意到 railscast 剧集,他正在为数据类型执行 AJAX 请求script

$('#new_painting').fileupload
    dataType: "script"

因此,根据您如何链接到 create 操作,该链接可能需要呈现 html 格式。

Template is missing
Missing template users/create, application/create with {:locale=>[:en], **:formats=>[:html]**, :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/home/tim/fairym/app/views"

您可以通过将 a 添加render js到您的操作来解决此问题,或者如果您正在执行 ajax 请求,请确保您的数据类型设置为脚本。

于 2012-10-25T18:54:30.703 回答