Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何用引用对象覆盖json视图?_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 如何用引用对象覆盖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

我的事件模型使用此方法覆盖FullCalendar的json视图

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'