JQuery Tokeninput JavaScript в рельсы3 - PullRequest
2 голосов
/ 16 июля 2011

У меня есть проект рельсов, который имеет простое сопоставленное отношение, как показано ниже:

категории моделей

has_many :stories

модель истории

belongs_to category

в контроллере моих историй iесть

def new
@story = Story.new
@categories = Category.all
end

, тогда в моем new.html.erb у меня есть

<%= form_for @story do |f| %>
<%= f.text_field, :title %>
<%= collection_select(:story, :category_id, @categories, :id, :name)%>
<% end %>

Я хочу заменить <%= collection_select %> (поле выбора) на <%= f.text_field%> (текстовое поле) изаполнить данные с помощью jquery toxeninput плагин javascript, и я не знаю, как это сделать.

1 Ответ

2 голосов
/ 16 июля 2011

Недавно я добавил jquery tokeninput в один из моих проектов и постараюсь дать грубую пошаговую процедуру, чтобы сделать это:

  1. Получите входной токен javascript и css и добавьте егоhtml
  2. Определите метод search_category в вашем контроллере следующим образом:

    def search_category
      # find the matching categories, Category.search method should implement all the logic needed
      categories = params[:q].blank? ? [] : Category.search(params[:q])
    
      render :json => categories.collect {|c| {:id => c.id, :name => c.name} }
    end
    
  3. инициируйте ввод токена jquery следующим образом:

    $("input#whatever").tokenInput("<%= search_category_path %>", {
      prePopulate: [{ 
                     id: "<%= @story.category.id %>", 
                     name: "<%= @story.category.name %>"
                   }],
      tokenLimit: 1 // limits only one selectable category
    });
    

Надеюсь, это поможет!

...