Javascript js.erb是如何工作的
最近我遇到了一些正在使用Javascript js.erb是如何工作的,javascript,ruby-on-rails,ruby,asp.net-ajax,erb,Javascript,Ruby On Rails,Ruby,Asp.net Ajax,Erb,最近我遇到了一些正在使用js.erb的应用程序,我真的不知道如何使用它……下面是代码。有人能帮我理解这是怎么回事吗 在routes.rb文件中 map.resources :player_emails 在创建操作中,我的控制器player\u emails\u controller.rb def create @player_email = PlayerEmail.create(params[:player_email]) if @player_email.save @response
js.erb
的应用程序,我真的不知道如何使用它……下面是代码。有人能帮我理解这是怎么回事吗
在routes.rb
文件中
map.resources :player_emails
在创建操作中,我的控制器player\u emails\u controller.rb
def create
@player_email = PlayerEmail.create(params[:player_email])
if @player_email.save
@response_txt = "The player has been emailed."
PlayerEmailsMailer.deliver_pattern_email(@something, @player_email, request.host_with_port)
@error = false
else
@error = true
@response_txt = "Please make sure you entered your name and a valid email address."
end
end
然后我有了文件player\u emails/create.js.erb
$('#player_email_ind').hide();
$('#player_email_submit').show();
$('#player_response_msg').html("<%= escape_javascript @response_txt %>").fadeIn();
<% unless @error %>
$('#player_email_form')[0].reset();
<% end %>
$('#player_email_ind').hide();
$(“#玩家#电子邮件#提交”).show();
$('#player_response_msg').html(“”.fadeIn();
$('#玩家\电子邮件\表单')[0]。重置();
我知道jquery正在进行什么,但我不知道这是如何进行
ajax
调用的。当出现js.erb
时,它是否会自动执行ajax
调用……有人能解释一下它的工作方式吗?为什么我不需要在控制器操作中做出响应,告诉它这是格式。js
你的表单提交按钮上有:remote=>true
吗?如果是这样,在rails.js
或application.js
中可能会有一些JavaScript通过AJAX自动提交。底线是,必须有一些JavaScript在某处发出AJAX调用并请求js或JSON响应,否则它将是一个html请求
至于你为什么不需要一个respond\u to
块,我不完全确定。也许因为调用总是由AJAX进行的,并且有一个可用的js.erb模板,所以它可以毫无怨言地完成它的工作。是否有html.erb模板?如果没有,请尝试执行常规表单提交,并查看是否有投诉。如果发出js(ajax)请求,它将通过呈现js.erb文件来响应,反之亦然
这是正在执行的默认行为:
respond_to do |format|
format.js{
render :template => 'create.js.erb'
}
format.html{
render :template => 'create.html.erb'
}
end
提交表单时,它会向
/player\u电子邮件发送帖子。routes.rb
中的资源声明确保请求由PlayerEmailsController#create
处理
控制器负责处理接收到的每种格式。在AJAX调用的情况下,格式为“js”,通过将格式字符串显式添加到URL的末尾(/player\u emails.js
)或(更可能)通过从请求头推断格式来设置
在您的例子中,create
操作不需要AJAX以外的任何东西,因此它采用了一个快捷方式,并省略了respond\u to
和format
块。控制器已经计算出格式是“js”,所以当创建
完成时,它会执行默认操作,为格式呈现适当的模板(创建.js.erb
)。我只是好奇是否有编写.js.erb的教程。。。