0

ここでは、ajax 経由で _employee_registers.html.erb を呼び出したいと思います。検索出力のみが ajax を使用して表示されます。私はこのhttp://railscasts.com/episodes/240-search-sort-paginate-with-ajaxに従っています。そしてそれはうまくいきます。しかし、私は今それを私のプロジェクトに実装したいと思っています。

私のindex.html.erb

<%= link_to 'New Employee register', new_employee_register_path %>
<%= form_tag employee_registers_path, :method => 'get', :id => "employee_registers_search" do %>
  <p>
    <%= select_tag "fieldtype", options_for_select([ "name", "email" ], "name") %>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil%>
  </p>
  <div id="employee_registers"><%= render 'employee_registers' %></div>
<% end %>
<br />

私のindex.js.erb

$("#employee_registers").html("<%= escape_javascript(render("employee_registers")) %>");

私の _employee_registers.html.erb 部分

<h1>Listing employees</h1>
<% @employee_registers.each do |employee_register| %>
<div class="span2 curve">
    <div class="profile_img">
        <%= image_tag employee_register.image.url,:size => "150x180"%>
</div>
         <p><strong><%= employee_register.first_name %><%= employee_register.last_name %>
         <br>
         <%= employee_register.department.name%><%=employee_register.division.name%><br>
            <%=mail_to employee_register.wemail%><br></strong></p>
    %><br/></br/>
<% end %>

</div>
<br />

私のapplication.js

$(function() {
  $("#employee_registers th a").live("click", function() {
          $.getScript(this.href);
        return false;
         });
       $("#employee_registers_search input").keyup(function() {
       $.get($("#employee_registers_search").attr("action"), $("#employee_registers_search").serialize(), null, "script");
       return false;
  });

私の問題は、そのdivのみを再表示するのではなく

$("#employee_register").html

すべてのページの出力を提供しており、ajax は機能していません。

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap-wysihtml5/core.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap-wysihtml5/index.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/bootstrap-responsive.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/companies.css?body=1" media="all" rel="stylesheet" type="text/css" />

<script media="all" src="/assets/bootstrap.js?body=1" type="text/javascript"></script>

何が問題なのですか?

4

2 に答える 2

1

私は2つのことを見ることができます、

1)フォームを作成するremote => true

<%= form_tag employee_registers_path, :method => 'get', :remote => true, :id => "employee_registers_search" do %>

2)検索フォーム自体の中にユーザーリストがあるのは少し珍しいことですが、formタグの外にそれを取得してみてください(これは、練習として、エラーとは関係ありません)

HTH

于 2013-01-15T09:46:49.273 に答える
1

あなたのコードにはいくつかの問題があります。

主な問題は、フォームが検索に基づいて employee_registers を提供するようにしたいが、検索アクションからの JavaScript 応答がないことだと思います。

このような検索アクションがあるとしましょう

def search
 @employee_registers = Employee.where(:name => params[:search])
end

次に、search.js.erb ファイルで

$("#employee_registers").append("<%= j(render @employee_registers)  %>

( j() は escape_javascript() のエイリアスです)

あなたの _employee_registers.html.erb パーシャルで

<div class="span2 curve">
    <div class="profile_img">
        <%= image_tag employee_register.image.url,:size => "150x180"%>
    </div>
    <p><strong><%= employee_register.first_name %><%= employee_register.last_name %>
    <br>
    <%= employee_register.department.name%><%=employee_register.division.name%><br>
    <%=mail_to employee_register.wemail%><br></strong></p>
    <br/></br/>
</div>
<br />

ここで、index.html.erb ファイルのコードを変更する必要があります。

<%= link_to 'New Employee register', new_employee_register_path %>
<%= form_tag employee_registers_path, , :remote => true, :method => 'get', :id =>    "employee_registers_search" do %>
  <p>
    <%= select_tag "fieldtype", options_for_select([ "name", "email" ], "name") %>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil%>
  </p>
  <div id="employee_registers"></div>
<% end %>
<br />

私はこれをテストしておらず、コードの他の場所にエラーがある可能性があります。あなたの質問には多くのコードが含まれており、エラーが何であるかを説明しています。それは良いことです。しかし、あなたが何をしたいのかは明確ではありません。もう少し説明してみると、より良い答えが得られます。

于 2013-01-15T10:05:50.280 に答える