Arhn - архитектура программирования

Ruby on Rails: Token Fields - railscast

Я пытаюсь заставить поля токенов работать в моем приложении.

Я точно следил за этим видео: http://railscasts.com/episodes/258-token-fields< /а>

модель проекта

class Project < ActiveRecord::Base
  attr_accessible  :edited_first_name, :edited_last_name, :first_name, :last_name, :business_div, :client, :customer_benifits, :edited_date, :end_date, :entry_date,  :financials, :industry, :keywords, :lessons_learned, :project_name, :project_owner, :role, :start_date, :status, :summary, :tech , :technols, :technol_tokens


has_many :projecttechnols
has_many :technols, :through => :projecttechnols

attr_reader :technol_tokens

  def technol_tokens=(ids)
    self.technol_ids = ids.split(",")
  end


accepts_nested_attributes_for(:technols)

контролер технологий:

def index
    @technols = Technol.where("tech like ?", "%#{params[:q]}%")

    respond_to do |format|
      format.html # index.html.erb
    format.json { render :json => @technols.map(&:attributes) }
    end
  end

макеты/application.html.erb

<!DOCTYPE html>
<html>
<head>

<div id="user_nav">
  <% if user_signed_in? %>
    Hi <%= current_user.firstname %>, Signed in as  <%= current_user.email %>.  Not you?

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
  <% else %>
    <%= link_to "Sign up", new_user_registration_path %> or
    <%= link_to "Sign in", new_user_session_path %>
  <% end %>
</div>
<% if current_user.try(:admin?) %>
 <div class="admin_button">
<%= button_to "ADMIN", users_path, :class => "button", :method => "get" %>

</div>




<% end %>
  <title>ExceptionApp</title>



<!--[if lt IE 9]>
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
  <![endif]-->
  <%= stylesheet_link_tag    "application", "token-input-facebook" %>
  <%= csrf_meta_tags %>
<link href="application.css" rel="stylesheet" />



<meta name="viewport" content="width=device-width; initial-scale=1.0">


<link rel="SHORTCUT ICON"
       href="/assets/minilogo.png">



<%= link_to(image_tag("/assets/logo.png"), projects_path, :class => "logow") %>

</head>
<body>

<%= yield %>


<style>
.debug {


position:absolute; right:0px; bottom:0px;

}
</style>
<div class ="debug">
<%= debug(params) %>
<div>


<%= content_tag(:div, flash[:error], :id => "flash_error") if flash[:error] %>
<%= content_tag(:div, flash[:alert], :id => "flash_alert") if flash[:alert] %>
<!-- Javascripts
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <%= javascript_include_tag :defaults, "application", "jquery.tokeninput" %>

  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>


</body>
</html>

проект/new.html.erb

<%= stylesheet_link_tag "new" %>


<h1>Create New Project</h1>

<%= stylesheet_link_tag "form" %>


<%= form_for(@project) do |f| %>



<p>
    <%= f.label :technol_tokens, "technol" %><br />
    <%= f.text_field :technol_tokens, "data-pre" => @project.technols.map(&:attributes).to_json %>
  </p>



</BODY>
</HTML>


<div class="create_button">
<div class="actions">
    <%= f.submit "Save New Project", :class => "button",  :confirm => "Are you sure you want to save the new project?" %>
  </div>
</div>




</div> <%#= small div %>





<% end %>



<div class="back_button2">
<%= button_to "Back", projects_path , :class => "button", :method => "get" %>
</div>

application.js РЕДАКТИРОВАТЬ:

$(function() {
  $("#project_technol_tokens").tokenInput("/technols.json", {
    crossDomain: false,
    prePopulate: $("#project_technol_tokens").data("pre"),
    theme: "facebook"
  });
});



$(function() {
  $("#project_start_date").datepicker({dateFormat: 'dd-mm-yy'});
});

$(function() {
  $("#project_end_date").datepicker({dateFormat: 'dd-mm-yy'});
});



jQuery(function(){

jQuery('#start_date_A').datepicker({dateFormat: "dd-mm-yy"});
});

jQuery(function(){

jQuery('#start_date_B').datepicker({dateFormat: "dd-mm-yy"});
});

На моей новой странице уже есть текстовое поле jquery datepicker, которое работает. Я не понимаю, почему поле токена на той же странице не работает.

Я просмотрел видео ровно 3 раза, чтобы убедиться, и оно все еще не работает. Разница только в том, что я помещаю свои javascripts и таблицы стилей в папку с ресурсами, а в видео они идут в общую папку. Кто-нибудь может помочь? Спасибо.


  • Вы проверили свои данные JSON? Также вам нужно, чтобы JS внутри документа был готов, чтобы он выполнялся при загрузке страницы. 04.10.2012
  • Я перешел на localhost:3000/technols.json, и данные были отображены, и на этой новой странице мне уже удалось заставить работать javascript. 04.10.2012
  • Не загружается javascript для поля токена. Я опубликовал отредактированную версию моего application.js 04.10.2012
  • Существует обновленный railscast с использованием JQuery TokenInput, который начинается примерно через 4:00 минуты в railscast. railscasts.com/episodes/258-token-fields-revised 25.10.2012

Ответы:


1

Не вероятная ошибка. Пожалуйста, попробуйте следующее:

  1. Проверьте файл application.js. Вы включили файл jquery.tokeninput.js?
  2. Убедитесь, что файл js для ввода токена требуется после jquery в application.js
  3. Убедитесь, что файлы CSS включены
  4. В браузере вы получаете какие-либо ошибки js в консоли? Если это так, пожалуйста, исправьте вопрос.

Изменить

Кроме того, я только что заметил, что в вашем new.html.erb у вас есть div после закрывающего тега html!

</BODY>
</HTML>

Пожалуйста, удалите / поместите их в нужное место.

19.11.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..