Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails根据ajax请求关闭fancybox_Jquery_Ruby On Rails_Ajax_Fancybox - Fatal编程技术网

Jquery Rails根据ajax请求关闭fancybox

Jquery Rails根据ajax请求关闭fancybox,jquery,ruby-on-rails,ajax,fancybox,Jquery,Ruby On Rails,Ajax,Fancybox,我一直在尝试很多东西,但我无法解决这个问题。 首先,我在一个fancybox里有一个表单部分 这是:*u form.html.erb* <%= form_tag sessions_path , remote:true , id: "login_form" do %> <div class="field"> <%= label_tag :email %> <%= text_field_tag :email, params[:email] %&g

我一直在尝试很多东西,但我无法解决这个问题。 首先,我在一个fancybox里有一个表单部分

这是:*u form.html.erb*

 <%= form_tag sessions_path , remote:true , id: "login_form" do %>
 <div class="field">
  <%= label_tag :email %>
  <%= text_field_tag :email, params[:email] %>
 </div>
 <div class="field">
  <%= label_tag :password %>
  <%= password_field_tag :password %>
 </div>
  <div class="actions"><%= submit_tag "Inloggen" %></div>
 <% end %>
问题是,当我在fancybox时,我没有得到任何反馈。 如果我检查控制台的XHR请求,它会发送数据,我会得到相应的响应,但fancybox不会关闭,我也不会收到任何警报

最后但并非最不重要的是我的会话控制器

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

#if there is a user with that e-mail, is it activated?
if @user
  if @user.user_level != '1' 
    @response = 1
  end
end

#check the login information with has_secure_password, user has to be activated
if @user && @user.authenticate(params[:password]) && @user.user_level == '1'
  session[:user_id] = @user.id
  @response = 2
else
  @response = 0
end

respond_to do |format|
  format.json { render :json => @response }
end
如果响应等于2,如何关闭fancybox? 我如何从fancybox中向用户显示他们的输入是不正确的

respond_to do |format|
  format.js do
    if @response == 2
      render :js => "$('#fancybox-content').remove();"
    end
  end
end
或者创建create.js.erb:

# controller
respond_to do |format|
  format.js { }
end

# create.js.erb

<% if @response == 2 %>
  $('#fancybox-content').remove();
<% end %>
#控制器
回应待办事项|格式|
format.js{}
结束
#create.js.erb
$(“#fancybox内容”).remove();
这是一个基本的方法。如果在创建失败时需要其他行为,请扩展代码

或者创建create.js.erb:

# controller
respond_to do |format|
  format.js { }
end

# create.js.erb

<% if @response == 2 %>
  $('#fancybox-content').remove();
<% end %>
#控制器
回应待办事项|格式|
format.js{}
结束
#create.js.erb
$(“#fancybox内容”).remove();

这是一个基本的方法。如果希望在创建失败时出现其他行为,请扩展代码。

可能我弄错了fancybox的dom\u id。如果它不起作用,请找出另一个。)谢谢顺便说一句:render:js=>“$.fancybox.close();”可能我弄错了fancybox的dom_id。如果它不起作用,请找出另一个。)谢谢顺便说一句:render:js=>“$.fancybox.close();”