1

我正在寻找一些很接近的东西,但它们要么是 Rail 2.x 并且不能在 3 中工作,要么它们足够不同,以至于我花了很多时间试图弄清楚如何重做它们。

这就是我想做的。我们有两种类型的人,会员和客人。会员拥有会员号码并获得折扣。我喜欢在表格中做的是当他们输入会员编号时,在数据库中查找,如果会员编号存在,则显示绿色检查,如果它不显示红色 x。这是为了改善体验,而不是不得不张贴整个表格,然后他们又弹回来了,因为他们粗暴地指了指会员号。

我想我可以使用 button_to 或 link_to 并将它们设置为 :remote => true,在控制器中调用一个函数并根据该结果,取消隐藏包含图像的 div。因此,在这些问题中,调用了该函数,但我不知道如何表示成功或失败。或者它转到 show.html.erb 页面而不是我所在的页面。或者我最喜欢的没有...

任何帮助表示赞赏。谢谢!

4

1 回答 1

1

PeopleController

def valid_member?(member_number)
  member_number = params[:number]
  member = People.find(number: member_number)
  if People.exists?(member)
    render :status => 200, :nothing => true
  else
    render :status => 404, :nothing => true
  end
end

routes.rb

match "/valid_member" => "people#valid_member"

application.js or people.js

function checkValidMember() {
  $("input#member-number").data("oldVal", $("input#member-number"));
  $("input#member-number").bind("propertychange keyup input paste", function(event){
    if ($(this).data('oldVal') != $(this).val()) {
      $(this).data('oldVal', $(this).val());
      if ( isValidMember($(this).val()) ) {
        alert("success");
        // your jquery magic for success case goes here
      }
      else {
        alert("fail");
        // your jquery magic for failure case goes here
      }
    }
  });
}

function isValidMember(member_number) {
  $.ajax({
    url: "valid_member?number="+member_number,
    success: function(data) {
      return true;
    },
    statusCode: {
      404: function() {
        return false;
      }
    }
  });
}

first edit.

Obviously, you need to have input field with correct id, member-number, as the javascript i wrote above.

于 2012-10-04T21:55:16.273 回答