3

我有一个名为 feed.js.erb 的视图文件,它位于 app/views/sports/feed.js.erb 中,其中包含:

<% if @newsfeed.nil? %>   
    alert("No news items for #{@athlete.nil? ? @team : @athlete.full_name}!")  
<% else %>   
    $("#sportfeed").append("<%= j render 'newsfeeds/newsfeed', feed: @newsfeed %>");  
<% end %>  

SportsController 中的控制器动作是

def feed  
  if params[:sport]  
      @newsfeed = get_sport_news(Sport.find(params[:sport]))  
  elsif params[:athlete]  
      @athlete = params[:athlete]  
      @newsfeed = get_athlete_news(Athlete.find(params[:athlete]))  
  elsif params[:team]  
      @team = params[:team]  
      @newsfeed = get_team_news(@sport.id, params[:team])  
  end  
end  

routes.rb 中的路线是:

resources :sports do  
  collection do  
      get :feed  
  end  
end

我得到的是

ActionView::MissingTemplate (Missing template sports/feed, application/feed with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}

这很奇怪,因为我已经通过另一个控制器成功地从 create 渲染了 js.erb。我知道这很简单,但我似乎无法破解它。非常令人沮丧。任何帮助,将不胜感激!

4

1 回答 1

1

你试过做

  respond_to do |format|
    format.js
  end

甚至

render :template => 'sports/feed'

在你的成功 if 语句块?这会强制控制器格式化 js.erb

于 2013-01-30T15:54:35.773 回答