Rails 4.1 ActionController::UnknownFormat error for respond_with using AngularJS
10,648
Solution 1
it seams that having
respond_to :json
is valid when the routes defines json as the default
scope :api, defaults: {format: :json} do
resources :resources
end
to not allow the html in the Controller simply add the following to the method
def new
@resource = Resource.new
respond_with(@resource) do |format|
format.html { render nothing: true, status: :unauthorized }
format.json { render :json => @resource.as_json }
end
end
Solution 2
In /app/assets/controllers/surveys_controller
you could change respond_with
to render json:
like so:
def index
@surveys = Survey.all
render json: @surveys
end
That worked for me using Rails 4.1.5.
Solution 3
Solved it with the following amendment:
In /app/assets/controllers/surveys_controller, use
respond_to :json, :html
instead of just
respond_to :json
Author by
CS Koh
Updated on June 12, 2022Comments
-
CS Koh almost 2 years
Keep getting ActionController:UnknownFormat error when trying to use respond_to and respond_with in rails controller. Error on the following line in controller.
respond_with @surveys
In /app/assets/controllers/surveys_controller
respond_to :json def index @surveys = Survey.all respond_with @surveys end
In /config/routes.rb
WebInsight::Application.routes.draw do scope :api do resources :surveys, defaults: {format: 'json'} end resources :surveys end
In /app/assets/views/surveys/index.html.erb
<h1>Your Surveys</h1> <form> <input type="text" ng-model='newSurvey' placeholder="Enter a survey"> <input type="submit" value="Add"> </form> <div ng-controller="SurveysCtrl"> <ul> <li ng-repeat="survey in surveys"> {{ survey.theme_id }}, {{ survey.name }}, {{ survey.description }} </li> </ul> </div>
In /app/assets/javascripts/angular/controllers/surveys_ctrl.js
app.controller('SurveysCtrl', ['$scope', '$resource', function($scope, $resource) { var Surveys = $resource('/api/surveys'); $scope.surveys = Surveys.query(); }]);