1

ruby を使ったプログラミングは初めてです。AJAX で Livesearch を作成しようとしていますが、頭痛の種です。基本的な考え方は、ユーザーがノードを作成すると、それを作成したユーザーの情報、親ノードなどの情報を同じ場所に保存できるということです。このために、ユーザーが親ノードの ID を入力するライブ検索を行いました。そのノードに対応するユーザー データが自動的に表示されます。次に、同じビューでノードを作成します。これまでのところ、私は仕事をしていない次のコードを持っています。

私はこのようなものが欲しい:


(ソース: subeimagenes.com )

問題:

  1. AJAX が機能していません。何か重要なことを忘れているに違いありません

  2. 値「parent_id」(_users.html.erb の u.id、「ライブ検索」の結果) を渡してノードを作成する方法がわかりません。

nodes_controller.rb

def new
@node = Node.new   
end

def search
@node = Node.new  
@parent = Node.search(params[:search]).where(:ocuped => true)

if not @users.nil?
  if @users.count == 1
    @node_incomplete = @users.nodes.where(" sons < ? AND ocuped = ?",2,true).first
  else
    @node_incomplete = @users.first.nodes.where(" sons < ? AND ocuped = ?",2,true).first
  end
  @son_of_incompleted_node = @node_incomplete.children
end

respond_to do |format|
  format.html
  format.js
end

終わり

search.html.erb

<%= form_for @node, :id => "users_search" do |f| %>
  <%= f.text_field :search, :value => params[:search], :autocomplete => 'off' %>
  <div id='users'>
      <%= render 'users' %>
  </div>
  <%= f.hidden_field :user_id, :value => current_user.id  %>
  <%= f.hidden_field :ocuped, :value => true %>
  <%= f.text_field :custom_node_name %>
  <%= f.check_box :terms_of_service,{}, true,false %>
  <%= f.submit "Create", class: "button postfix" %>
<% end %>

_users.html.erb

<% if not @parent.nil? %>
<% @parent.each do |u| %>
    <ul class="inline-list">
        <li class="img-simple" style = "text-align: center; background-image: url('<%= u.user.profile_img %>')"></li>
            <li style="display:table-cell; vertical-align: middle;"><h6><%= u.user.name %></h6><p><%= u.user.email %></p></li>
    </ul>
<% end %>

node.rb

def self.search(search)
  self.where('id = ? ', search.to_i)
end

アプリケーション.js

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require foundation
//= require_tree .

$(function() {
  $("#users_search input").keyup(function() {
  $.get($("#users_search").attr("action"), $("#users_search").serialize(), null, "script");
return false;
   });
 });

ノード.js.コーヒー

jQuery ->

# Ajax search on keyup
$('#users_search input').keyup( ->
  $.get($("#users_search").attr("action"), $("#users_search").serialize(), null, 'script')
false
)

ビュー/ノード/search.js.erb

$('#users').html('<%= escape_javascript(render("users")) %>');
4

0 に答える 0