【问题标题】:Search value by ajax call using Rails 3使用 Rails 3 通过 ajax 调用搜索值
【发布时间】:2015-04-16 23:02:09
【问题描述】:

我想使用 Rails 3 通过 ajax 调用获取数据。我有一个表格,如下所示。

views/users/new.html.erb

<%= form_for :user ,:url => {:action => "search" } do |f| %>
        <div class="input-group bmargindiv1 col-md-12"> <span class="input-group-addon text-left">Receipt No. Scan :</span>
        <%= f.text_field :user_no,:class => "form-control",placeholder:"user number" %>
    </div>
    <% end %>

此表单说明用户何时键入 user_no,一旦键入数字,搜索操作将执行。此表单下方应显示一个表,以根据该 user_no 匹配显示其他数据。该表如下所示。

<table>
<tr>
<th>User Name</th>
<th>User Email</th>
<th>User Number</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>

此表最初将被隐藏。一旦搜索完成,它将显示适当的数据。

下面是我的控制器页面。

控制器/users_controller.rb

class UsersController < ApplicationController
 def new
  @user=User.new
 end 
 def search

 end
end

所有数据(即用户编号、姓名和电子邮件)已保存在 DB 中。请帮助我使用 Rails Ajax 完成此任务,并且在表单提交后无需重新加载页面即可显示数据。我使用的是 Rails 3.2 版。 19.

【问题讨论】:

    标签: ruby ajax ruby-on-rails-3.2


    【解决方案1】:

    如果我理解正确,请尝试类似的方法:

    在控制器中:

    def search
      @user = User.find_by_user_no(params[:user_no])
    end
    

    以形式来看:

    <%= form_for :user ,:url => {:action => "search" }, remote: true do |f| %>
        <div class="input-group bmargindiv1 col-md-12"> <span class="input-group-addon text-left">Receipt No. Scan :</span>
           <%= f.text_field :user_no,:class => "form-control",placeholder:"user number" %>
        </div>
    <% end %>
    

    remote: true 表示请求将是异步的。

    用表格查看:

    <div id="search-output-table">
       <%= render partial: "search_output_table", locales: {user: @user} %>
    </div>
    

    在app/views/users/_search.js.erb:

    $("#search-output-table").html("<%= escape_javascript( render(partial: "search_output_table") ) %>");
    

    在app/views/users/_search_output_table.html.erb:

    <table>
      <tr>
        <th>User Name</th>
        <th>User Email</th>
        <th>User Number</th>
      </tr>
      <tr>
        <td><%= user.name %></td>
        <td><%= user.email %></td>
        <td><%= user.number %></td>
      </tr>
    </table>
    

    【讨论】:

    • 嗨,Gena 好的,但是在文本字段中输入数字后应该执行操作,因为没有提交按钮。
    • 是的,我明白了。在这种情况下,您应该使用 javascript 为输入表单设置 onInput 事件。
    • 嗨,Gena,通过应用这个逻辑,我尝试了一个应用程序,但遇到了一些问题,你能帮我吗..?如果是,那么我会发布链接。
    • Gena,请检查此链接stackoverflow.com/questions/29695568/…帮助我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多