Ruby on rails 如何用引用对象覆盖json视图?
我的事件模型使用此方法覆盖FullCalendar的json视图Ruby on rails 如何用引用对象覆盖json视图?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我的事件模型使用此方法覆盖FullCalendar的json视图 def as_json(options = {}) { :id => self.id, :title => self.title, :slug => self.slug, :description => self.description || "", :start => starts_at.rfc822, :end =&g
def as_json(options = {})
{
:id => self.id,
:title => self.title,
:slug => self.slug,
:description => self.description || "",
:start => starts_at.rfc822,
:end => ends_at.rfc822,
:allDay => self.all_day,
:recurring => false,
:url => Rails.application.routes.url_helpers.event_path(id)
}
end
我的关系是:
class Event
belongs_to: city
end
class City
belongs_to: region
has_many: events
end
class Region
has_many: cities
end
控制器
def index
@region = Region.find(1)
@cities = @region.cities
# full_calendar will hit the index method with query parameters
# 'start' and 'end' in order to filter the results for the
# appropriate month/week/day. It should be possiblt to change
# this to be starts_at and ends_at to match rails conventions.
# I'll eventually do that to make the demo a little cleaner.
@events = Event.scoped
@events = @events.after(params['start']) if (params['start'])
@events = @events.before(params['end']) if (params['end'])
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @events }
format.js { render :json => @events }
end
end
# GET /events/1
# GET /events/1.xml
def show
@event = Event.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @event }
format.js { render :json => @event.to_json }
end
end
正确的url/路径是嵌套的资源(区域\城市\事件)。如何获取区域和城市值并将它们放置在:url中,以便url正确且嵌套?好的,因为索引操作是使用事件的json响应的,所以您需要在javascript代码中使用相同的链接帮助器,将用户链接到索引html页面 在您看来,您可以拥有如下内容:
<script>
var calendar_url = '<%= regions_cities_events_path(@region, @city) %>'
</script>
如果我很了解您,您希望将“/region/city/event_id”映射到您的事件控制器show action-为此,请将此路由添加到routes.rb:
match '/:region_id/:city_id/:event_id' => 'events#show'
然后,在EventsController中的show方法中,您可以使用
params[:region\u id]
和params[:city\u id]
来查找用户要查找的地区和城市。您需要向我们展示您的控制器并查看代码,以了解您希望在何处实现此目的。简而言之,带有日历的页面必须具有要通过的区域和城市的上下文。如果您只想显示所有事件,而不关心地区和城市,那么创建另一条路线来支持它。刚刚更新了contoller Logic的问题我的路线是…资源:地区做资源:城市做资源:事件资源:餐厅等,我可以使用此地区\城市\事件\路径。所以我想我需要将:url=>Rails.application.routes.url\u helpers.event\u path(id)的路径更改为:url=>Rails.application.routes.url\u helpers.region\u city\u event\u path(region,city,id),但这行不通!
match '/:region_id/:city_id/:event_id' => 'events#show'