我正在尝试使用位于/ 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
这里有什么问题?
答案 0 :(得分: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
答案 1 :(得分:2)
我知道这已经回答了,但我遇到了同样的问题和错误信息,并通过添加" remote:true"解决了这个问题。我的形式。每当在表单上提交ajax调用时,您都需要这样做。
我知道这对大多数人来说是显而易见的,但对于像我这样常常忘记这些事情的新手来说并不明显。
例如:
<%= form_for([@club, @club_order], remote: true) do |f| %>
希望这有帮助。
答案 2 :(得分:1)
无法找到您的模板的原因是,如果您在railscast剧集中注意到,他正在针对script
的数据类型执行AJAX请求
$('#new_painting').fileupload
dataType: "script"
因此,根据您如何链接到创建操作,链接可能需要呈现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"
您可以通过向操作添加render js
来解决此问题,或者如果您正在执行ajax请求,请确保将您的数据类型设置为脚本。