最近我遇到了一些使用js.erb的应用程序,我不确定如何使用它…这是下面的代码.有人可以帮我理解这是如何工作的吗?
在routes.rb文件中
map.resources :player_emails
我的控制器player_emails_controller.rb在create动作中
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_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 %>
我知道jquery会发生什么,但我不知道这是怎么做ajax调用的.它是否只是在有js.erb时自动执行ajax调用…有人可以解释它的工作方式以及为什么我不需要在控制器操作中的respond_to告诉它这是format.js
解决方法
如果发出了js(ajax)请求,它将通过呈现js.erb文件来响应,反之亦然.
这是正在执行的默认行为:
respond_to do |format| format.js{ render :template => 'create.js.erb' } format.html{ render :template => 'create.html.erb' } end