Ruby on rails Rails使用JBuilder(AngularJS)响应
我有一个斯诺克联盟的简单应用程序,我有一个联盟控制器中的动作添加玩家。我的客户机(AngularJS)调用此操作,我希望使用JBuilder以json格式响应。这项工作罚款:Ruby on rails Rails使用JBuilder(AngularJS)响应,ruby-on-rails,json,angularjs,jbuilder,Ruby On Rails,Json,Angularjs,Jbuilder,我有一个斯诺克联盟的简单应用程序,我有一个联盟控制器中的动作添加玩家。我的客户机(AngularJS)调用此操作,我希望使用JBuilder以json格式响应。这项工作罚款: def add_player ... render :json => @league.players.to_json(:only => [ :id, :firstname, :lastname, :max_break, :email ]) end 但当我删除这一行并添加: respond_to
def add_player
...
render :json => @league.players.to_json(:only => [ :id, :firstname, :lastname, :max_break, :email ])
end
但当我删除这一行并添加:
respond_to do |format|
format.html
format.json
end
我有一个错误:
ActionView::MissingTemplate (
Missing template leagues/add_player,
application/add_player
with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder, :haml]}.
Searched in:
* "/home/daniel/SitesWWW/snookerLeague/app/views"
):
app/controllers/leagues_controller.rb:67:in `add_player'
当然,我有文件add_player.json.jbuilder:
json.players @league.players do |player|
json.id player.id
json.firstname player.firstname.capitalize if player.firstname
json.lastname player.lastname.capitalize if player.lastname
json.email player.email
json.max_break player.max_break
end
那么,我应该怎么做呢?注意,在您的错误消息
:formats=>[:html]
中,这向我表明它正在尝试呈现add\u player.html.erb,而不是您的jbuilder模板
要验证这一点,请尝试更改调用代码并将.json
附加到url,这将强制格式为json
您还可以在路由上指定默认的json,而不将其包含在url中:
resources :leagues, defaults: { format: :json } do
member do
post :add_player
end
end
另请参见:更改路线帮助。谢谢