Хорошо, так что после нескольких дней борьбы с плагином ruby on rails он работает как taggable-on и сводится к следующему:
У меня есть модель 'События' и календарь (jQuery FullCalendar), где вы можете нажать на сохраненные события, чтобы просмотреть и отредактировать их информацию. У меня есть поле ввода tag_list в режиме редактирования, где вы можете добавить теги, и я вижу в журнале сервера, что теги вставлены в мою базу данных sqlite3, и я правильно вижу их в консоли sqlite3.
Сразу после того, как я сохранил новые теги, они отображаются так, как и было задумано во всплывающем окне просмотра, но как только я обновляю страницу (с / без перезагрузки кэша), они больше не отображаются! Это сводит меня с ума!
Вот код:
Модель - event.rb
class Event < ActiveRecord::Base
validates :title, :presence => true
validates :country, :presence => true
attr_accessible :title, :country, :start, :end, :website, :fbevent, :artists, :description, :admission, :color, :tag_list
acts_as_taggable_on :tags
end
Контроллер (уничтожить, голова и конец пропущены) events_controller.rb
def index
render :json => Event.all
end
def create
render :json => Event.create!(:start => params[:start], :end => params[:end], :title => params[:title],
:color => params[:color], :country => params[:country], :website => params[:website],
:fbevent => params[:fbevent], :artists => params[:artists], :description => params[:description],
:admission => params[:admission], :tag_list => params[:tag_list])
end
def update
event = Event.find(params[:id])
event.update_attributes!(:start => params[:start], :end => params[:end],
:title => params[:title], :color => params[:color], :country => params[:country], :website => params[:website], :fbevent => params[:fbevent], :artists => params[:artists], :description => params[:description],
:admission => params[:admission], :tag_list => params[:tag_list])
render :json => event
end
JavaScript application.js, который находится посередине между полями ввода jQuery UI и моделью (функция Open и функция Save)
eventClick: function(fcEvent) {
this.eventViewNoEdit.model = this.collection.get(fcEvent.id);
this.eventViewNoEdit.render();
},
open: function() {
this.$('#title').val(this.model.get('title'));
this.$('#country').val(this.model.get('country'));
this.$('#website').val(this.model.get('website'));
this.$('#fbevent').val(this.model.get('fbevent'));
this.$('#artists').val(this.model.get('artists'));
this.$('#description').val(this.model.get('description'));
this.$('#admission').val(this.model.get('admission'));
this.$('#tag_list').val(this.model.get('tag_list'));
},
save: function() {
this.model.set({'title': this.$('#title').val(), 'color': 'Blue', 'country': this.$('#country').val(), 'website': this.$('#website').val(), 'fbevent': this.$('#fbevent').val(), 'artists': this.$('#artists').val(), 'description': this.$('#description').val(), 'admission': this.$('#admission').val(), 'tag_list': this.$('#tag_list').val()});
if (this.model.isNew()) {
this.collection.create(this.model, {success: this.close});
} else {
this.model.save({}, {success: this.close});
}
}
Соответствующая часть представления рендера
<%= content_tag :div, :class =>"eventdiv" do -%>
<%= content_tag :h2, "Tagged with" %>
<%= content_tag :p,"", :id=> "tag_list", :class => "field" %>
<% end -%>
Если у вас есть какие-либо идеи о том, что я делаю неправильно, пожалуйста, дайте мне знать: c Я думаю, что должно быть что-то не так, когда события загружаются в календарь, чтобы соединение с базой данных тегов не было. Я не понимаю, как это должно быть?
Запущен GET "/ events" для 127.0.0.1 в вторник, 28 февраля 09:37:35 +0100 2012
Обработка EventsController # index как JSON
Загрузка события (0,6 мс) ВЫБРАТЬ «события». * ИЗ «событий»
Завершено 200 OK за 57 мс (Просмотров: 7,0 мс | ActiveRecord: 0,6 мс)
Это то, что он говорит, когда я перезагружаю страницу ...