Reputation: 735
Here i want to call _employee_registers.html.erb via ajax. only the search output will display using ajax. i am following this http://railscasts.com/episodes/240-search-sort-paginate-with-ajax . and it works well. But i want to implement it in my project now.
my 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 />
my index.js.erb
$("#employee_registers").html("<%= escape_javascript(render("employee_registers")) %>");
my _employee_registers.html.erb partial
<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 />
my 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;
});
my problem is instead of refresing only that div
$("#employee_register").html
It is giving output of all the page and ajax is not workin.
<!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>
What could be the problem?
Upvotes: 0
Views: 1184
Reputation: 4927
There is a few problems with your code.
I think the main problem is that you want your form to give employee_registers based on a search, but you don't have a javascript response from the search action.
Lets say you have a search action like this
def search
@employee_registers = Employee.where(:name => params[:search])
end
then in your search.js.erb file
$("#employee_registers").append("<%= j(render @employee_registers) %>
(the j() is an alias for escape_javascript() )
In your _employee_registers.html.erb partial
<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 />
Now you have to change some code in the index.html.erb file
<%= 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 />
I have not tested this and there might be errors elsewhere in your code. Your question is containing a lot of code and you explain what the error is, thats good. But, it is not clear what you want to do. Try to explain a little more and you'll get better answers.
Upvotes: 1
Reputation: 16629
I can see 2 things,
1) make your form remote => true
<%= form_tag employee_registers_path, :method => 'get', :remote => true, :id => "employee_registers_search" do %>
2) its little unusual that you have the users list inside the search form itself, try to get it outside the form
tag (this is nothing to do with your error, just as a practice)
HTH
Upvotes: 1