背景:我正在創建一個可以創建維基的用戶的維基克隆。用戶還可以添加同行用戶貢獻維基的合作者。頁面加載與JavaScript上的紅寶石JavaScript問題應用程序
我通過單擊鏈接到達該頁面時遇到了JavaScript問題。當我重新加載這個相同的頁面的JavaScript的作品。大多數javascript是用於自動完成搜索功能的,它可以呈現頁面底部與搜索框中輸入的字母匹配的用戶名稱。
在我的功能,我有一個鏈接到它看起來像這樣的編輯#維基視圖顯示#維基視圖鏈接:
#views/wikis/show.html.erb
<%= link_to "Edit", edit_wiki_path(@wiki), class: "btn btn-success" %>
一旦鏈接被點擊,出現編輯#維基頁面頁面加載但javascript和ajax調用不起作用。該views/wikis/edit.html.erb
頁低於,然而,大部分的AJAX的被使用的代碼的重要組成部分是局部爲在底部的合作者的形式:
<h1>Edit Wiki</h1>
<div class="row">
<div class="col-md-4">
<p>Guidelines for Wikis</p>
<ul>
<li>Make sure the it rhymes.</li>
<li>Don't use the letter "A".</li>
<li>The incessant use of hashtags will get you banned.</li>
</ul>
</div>
<div class="col-md-8">
<%= form_for @wiki do |f| %>
<div class="form-group">
<%= f.label :title %>
<%= f.text_field :title, class: 'form-control', placeholder: "Enter post title" %>
</div>
<div class="form-group">
<%= f.label :body %>
<%= f.text_area :body, rows: 20, class: 'form-control', placeholder: "Enter post body" %>
</div>
<%if policy(@wiki).edit_form_settings? %>
<div class="form-group">
<%= f.label :public, class: 'checkbox' do %>
<%= f.check_box :public %> Public wiki
<% end %>
</div>
<% end %>
<div class="form-group">
<%= f.submit "Save", class: 'btn btn-success' %>
</div>
<% end %>
</div>
</div>
<%if policy(@wiki).edit_form_settings? %>
<%= render partial: "collaborations/new", locals: { wiki: @wiki, collaboration: @collaboration} %>
<% end %>
的形式從views/collaborations/_new.html.erb
部分在下面列出
<%= form_for [wiki, collaboration] do |f|%>
<div class = "col-md-8">
<div class = "form-group">
<%= f.label :user_name %>
<%= f.text_field :user_name, class: 'form-control', placeholder: "Enter name" %>
</div>
<%= f.hidden_field :user_id %>
<div class = "form-group">
<%= f.submit class: 'btn btn-success' %>
</div>
</div>
<div id="user_data" class="dropdown">
<ul class="list-group" style= "width:50%">
<!-- <li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="list-group-item">Morbi leo risus</li>
<li class="list-group-item">Porta ac consectetur ac</li>
<li class="list-group-item">Vestibulum at eros</li> -->
</ul>
</div>
</div>
</div>
</div>
<%end%>
我在assets/javascripts/collaborations.js.erb
文件的JavaScript:
$(document).ready(function()
{
$('#collaboration_user_name').on('keyup', function() {
text = $(this).val();
// alert(text);
$.ajax({ url: "/collaborations?collaboration="+text,
beforeSend: function(xhr) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
}).done(function(data) {
console.log("data:", data);
users = JSON.parse(data);
$("#user_data ul li").remove();
$.each(users, function(index, value) {
$("#user_data ul").append("<li class='list-group-item' value ="+ users[index].id+">"+users[index].name+ ", " +users[index].email+ "</li>");
});
<% @user = "data" %>;
$("#user_data").append(JSON.parse(data).name);
$(' .list-group-item').click(function() {
//alert($(this).val());
$('#collaboration_user_name').val($(this).text().split(",")[0]);
$('#collaboration_user_id').val($(this).val());
});
});
});
});
最後的AJAX調用控制器動作collaboration_search
在controllers/collaborations_controller.rb
:
class CollaborationsController < ApplicationController
respond_to :html, :js
def collaboration_search
#name_search = params[:collaboration][:user_name].to_s
@users_by_name = User.where('name Like ?', "%#{params[:collaboration]}%").limit(4)
puts @users_by_name.to_a
render json: @users_by_name
end
end
我曾試圖消除turbolinks寶石但是這並沒有固定的問題。我將不勝感激任何幫助!