首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails AJAX表单验证

问Rails AJAX表单验证
EN

Stack Overflow用户
提问于 2015-12-02 16:05:28
回答 1查看 927关注 0票数 0

当我不使用表单模型时,在rails中实现AJAX表单验证的最佳地方是哪里?我该如何实现它呢?

我提交的表单需要在运行控制器中的方法之前检查IP地址是否存在并且是有效的。如果IP无效,我想通过flash[:danger]消息让用户知道。

views/tools/forms/_ping.html.erb

代码语言:javascript
复制
<%= form_tag ping_tool_path(1), role: "form", class: "form-inline form_ip", name: "ping-form", method: "post", remote: true do %>
    <%= text_field_tag :ip, params[:ip], class: "form-control" %>
    <%= submit_tag "Ping", name: nil, class: "btn btn-default" %>
<% end %>

views/tools/ping.js.erb

代码语言:javascript
复制
$(".output").html("<%= j (@results) %>");

controllers/tools_controller.rb

代码语言:javascript
复制
def ping
    ping_host(params[:ip])
    save_host(params[:ip])

    # AJAX
    respond_to do |format|
      format.js
    end
end
EN

回答 1

Stack Overflow用户

发布于 2015-12-02 16:27:11

这将取决于应用程序的时间和可伸缩性。

对于更可伸缩的解决方案,我将使用active_interaction gem,创建一个新的交互,并在其上进行验证。

这是docs interaction

如果您想要一个更简单的解决方案,您可以始终在验证ip的控制器上创建一个私有方法。

编辑过的

代码语言:javascript
复制
    private

    require 'resolv'

    def valid_ip?(ip)
      case ip
      when Resolv::IPv4::Regex
        return true
      when Resolv::IPv6::Regex
        return true
      else
        return false
      end
    end

受本文启发,http://spin.atomicobject.com/2013/08/28/ruby-ip-address-regex/

编辑2

连接两个部分

在你的控制器里

代码语言:javascript
复制
    def ping
        if valid_ip?(params[:ip])
          ping_host(params[:ip])
          save_host(params[:ip])
          render json: { message: "sucess" }
        else
          render json: { errors: "Invalid Ip" }, status: 422
        end
    end

javascript

代码语言:javascript
复制
    <script>
      $(document).ready(function(){
        $('.form_ip').on('ajax:success',function(e, data, status, xhr){
          // success message
          alert("success");
        }).on('ajax:error',function(e, xhr, status, error){
          // errors handler
          var errors = $.parseJson(xhr.response_text).errors;
          alert(errors);
        });
      });
    </script>

源-> http://travisjeffery.com/b/2012/04/rendering-errors-in-json-with-rails/

如果您也想在用户提交之前进行验证,请查看html5输入模式属性pattern.asp。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34047352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档