Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 Rails使用JBuilder(AngularJS)响应_Ruby On Rails_Json_Angularjs_Jbuilder - Fatal编程技术网

Ruby on rails Rails使用JBuilder(AngularJS)响应

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

我有一个斯诺克联盟的简单应用程序,我有一个联盟控制器中的动作添加玩家。我的客户机(AngularJS)调用此操作,我希望使用JBuilder以json格式响应。这项工作罚款:

 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

另请参见:

更改路线帮助。谢谢