json - fullcalendar-rails: different calendars for different events places -


i use gem 'fullcalendar-rails', based on jquery fullcalendar plugin adam shaw, organize application's events.

i read useful , written tutorial fernando perales, linked in readme.md file. since use fullcalendar-rails rails 5 application, , new json, ask questions.

my event model has place attribute, place event held. goal have different calendars different places, because each place has own events.

my idea insert in events index page following form:

<%= form_tag(events_path, method: :get, id: "search-event-place") %> <%= text_field_tag :search, params[:search], placeholder: "search place" %> <%= submit_tag "search", class: "btn btn-primary" %> <% end %>  <% if @events.present? %>   <div id="calendar"></div> <% end %> 

in way users can place , events held in place, organised in fullcalendar. so, instance, if user search event in london, calendar events in london...

the index action in events controller follows:

def index   if params[:search]     @events = event.search(params[:search])   else     @events = nil   end end 

would work if, after defining search method in event model, defined instance variable @events used index.json.builder file @events = event.search(params[:search]) ?
search method defined in event model follows:

def self.search(search)   where("place ilike ?", "#{search}") end 

is index page of restful events resource right place define @events? events see if go to: localhost:3000/events.json or to: localhost:3000/events?

one of main concerns this: since show action of restful events resource corresponds url /events/1 event id=1, wonder if routed correctly using each event in index.json.builder file html format generates url such /events/1.html. in fact, common rails practice, insert partial generic event in app/views/events/show.html.erb

lastly: users choose day of event jquery date picker, attribute event_date saved string format "yy-mm-dd": how can set json start , end? start , end attributes necessary or can choose day of event?

hello!

1. query

i think more suitable scope:

  scope(:place, ->(search) { where('place ?', "%#{search}%") }) 

then can chain other queries , such.

update:

this code should added event-model. can call event.place('search-string').where(sun: true) or other way around, chainable.

2. controller

you use index action, i.e.

def index   respond_to |format|     format.html     format.json       @events = set_events     end   end end  def set_events   if params[:place].present?     event.place(params[:place])   else     event.all   end end 

and if have events#index route, can access extension .json , see rendered json index.json.jbuilder.

e.g. if access /events see index.html.erb , /events.json?place=place1 render events place place1 json.

update

the format.html allows rendering html json.

3. view

this requires decisions:

  1. are places predefined or user input?
  2. how users search places?

if places predefined (or can accessed) render calendars as:

<div class="fullcalendar" data-place="<%= 'place1' %>"> </div> 

js:

const calendars = document.getelementsbyclass('fullcalendar'); array.from(calendars).foreach(function(calendar) {   const place = calendar.dataset.place;   calendar.fullcalendar({     eventsources: [{ url: '/events.json?place=' + place }],     other_options:...   }); }); 

4. rest

i not understand concerns regarding show or mean datepicker - please elaborate!


update

i tried put in gist time. https://gist.github.com/davidwessman/7597e3eea4e71238d7f71a74928e64bd please check if out if helps!


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -