如果验证失败,则调用javascript

时间:2012-02-10 16:16:14

标签: javascript ruby-on-rails ruby ruby-on-rails-3

我有问题。当表单验证失败时,我需要调用javascript函数。 我想这样做。这是我在comment_controller中的创建操作。

  def create
    p params
    @comment = parent.comments.build(params[:comment].merge(:ip => request.remote_ip))
    if @comment.save
      redirect_to @page.url, :notice => "grats"
    else
      @country = @page.country
      @city = @page.city
      respond_to do |format|
        format.html { render :template => "pages/show" }
        format.js { render "pages/show" }
      end
    end
  end

和pages / show.js.erb有代码

$('.main').fadeOut(5000);

但它不起作用。我尝试了另一个js代码,但它也没有用。我做错了什么?

2 个答案:

答案 0 :(得分:0)

你尝试的其他js代码是什么?

最简单的事情应该是:

alert("foo");

是否存在类'main'的html元素? (查看源代码)

您的回复是否实际呈现了show.js.erb文件?您的服务器日志会告诉您。

Rendered portal/cart_items/update.js.erb (38.4ms)
Completed 200 OK in 650ms (Views: 51.3ms | ActiveRecord: 6.5ms)

第一行是ajax响应的典型行。

FireBug可以帮助您查看服务器端发生的情况。

答案 1 :(得分:-1)

我想您想重定向到您尝试将评论添加到的页面?

如果是,请尝试

else
  @country = @page.country
  @city = @page.city
  flash[:errors] = "Your error message..."
  redirect_to @page
end

虽然我建议在客户端使用javascript进行基本验证,然后才能更容易地显示错误。