我正在互联网上搜索有关此主题的信息,但是我不了解AJAX如何与rails一起使用,我已经检查了文档并且只是不理解。
我所知道的是AJAX是异步的,只需要将以下代码放在视图中即可发出请求:“ remote:true
”,我无法理解的主要是关于此代码的:
respond_to :js
显然,它告诉控制器它将响应Javascript,并且您必须为要使用JS做的任何事情创建一个文件,我的项目结构是这样的:
查看
New.html.erb:
<p>Imagen de portada</p>
<%= simple_form_for @entries, remote: true do |f| %>
<% f.file_field 'input-image' %>
<% end %>
<div id="image-entry"></div>
查看路线:
views
|
-->admins
|
-->entries
|-->new.html.erb
|-->new.js.erb
控制器
entries_controller.rb
module Admins
class EntriesController < ApplicationController
before_action :authenticate_admin!
def index
render 'index'
end
def new
@entries=''
render 'new'
respond_to :js
end
end
end
控制器路线:
controllers
|
-->admins
|
-->entries_controller.erb
JS
new.js.erb
console.log('funciona');
$('#input-image').click(function(){
$('body').css('background-color', 'red');
});
JS路线:
views
|
-->admins
|
-->entries
|-->new.html.erb
|-->new.js.erb
错误
我在此代码中的错误如下:
ActionController::UnknownFormat
因此,我对这个错误以及JS中的文件的正确名称有疑问,以使respond_to
正常工作。
答案 0 :(得分:0)
Irfan Fadilah在Facebook上的答案
您的请求未被EntriesController中的“ new”方法处理。默认的表单方法是POST,因此Rails会在您的EntriesController中寻找“创建”方法。
有关更多详细信息,请阅读《 Rails指南》中的RESTful路由。
为了使您的AJAX请求生效。在视图/条目中添加“ create”方法到EntriesController并在视图/条目中创建create.js.erb(只需编写alert(“ Hello”);或对其进行测试)。
https://www.facebook.com/groups/railsrocks/permalink/10151091424934957/