Rails ActionController::ParameterMissing error when creating new record in Ember
Rails 5.2 with fast_jsonapi 1.5, Ember 3.4
I create a new Tag record like this in Ember:
let newTag = this.get('store').createRecord('tag', {
name: this.get('name')
});
newTag.save();
This sends the following json (as seen in the Network tab of Chrome as the Request Payload):
{"data":{"attributes":{"name":"photos","created_at":null,"updated_at":null},"type":"tags"}}
But Rails only gets (as verified by printing out the params in the create method of the TagsController):
{"controller"=>"tags", "action"=>"create"}
And it throws the following error:
ActionController::ParameterMissing (param is missing or the value is empty: tag)
And here is my controller code:
# app/controllers/tags_controller.rb
class TagsController < ApplicationController
def create
tag = Tag.create!(tag_params)
render json: {status: "success"}
end
private
def tag_params
puts params
params.require(:tag).permit(:name)
end
end
What's the trick to get ember and rails to understand each other? Since ember is sending the "type" in the payload, can I get Rails to understand that this is the model and thus fulfill the requirement I've set that "tag" be present in the params?
ember.js ruby-on-rails-5 fastjsonapi
add a comment |
Rails 5.2 with fast_jsonapi 1.5, Ember 3.4
I create a new Tag record like this in Ember:
let newTag = this.get('store').createRecord('tag', {
name: this.get('name')
});
newTag.save();
This sends the following json (as seen in the Network tab of Chrome as the Request Payload):
{"data":{"attributes":{"name":"photos","created_at":null,"updated_at":null},"type":"tags"}}
But Rails only gets (as verified by printing out the params in the create method of the TagsController):
{"controller"=>"tags", "action"=>"create"}
And it throws the following error:
ActionController::ParameterMissing (param is missing or the value is empty: tag)
And here is my controller code:
# app/controllers/tags_controller.rb
class TagsController < ApplicationController
def create
tag = Tag.create!(tag_params)
render json: {status: "success"}
end
private
def tag_params
puts params
params.require(:tag).permit(:name)
end
end
What's the trick to get ember and rails to understand each other? Since ember is sending the "type" in the payload, can I get Rails to understand that this is the model and thus fulfill the requirement I've set that "tag" be present in the params?
ember.js ruby-on-rails-5 fastjsonapi
add a comment |
Rails 5.2 with fast_jsonapi 1.5, Ember 3.4
I create a new Tag record like this in Ember:
let newTag = this.get('store').createRecord('tag', {
name: this.get('name')
});
newTag.save();
This sends the following json (as seen in the Network tab of Chrome as the Request Payload):
{"data":{"attributes":{"name":"photos","created_at":null,"updated_at":null},"type":"tags"}}
But Rails only gets (as verified by printing out the params in the create method of the TagsController):
{"controller"=>"tags", "action"=>"create"}
And it throws the following error:
ActionController::ParameterMissing (param is missing or the value is empty: tag)
And here is my controller code:
# app/controllers/tags_controller.rb
class TagsController < ApplicationController
def create
tag = Tag.create!(tag_params)
render json: {status: "success"}
end
private
def tag_params
puts params
params.require(:tag).permit(:name)
end
end
What's the trick to get ember and rails to understand each other? Since ember is sending the "type" in the payload, can I get Rails to understand that this is the model and thus fulfill the requirement I've set that "tag" be present in the params?
ember.js ruby-on-rails-5 fastjsonapi
Rails 5.2 with fast_jsonapi 1.5, Ember 3.4
I create a new Tag record like this in Ember:
let newTag = this.get('store').createRecord('tag', {
name: this.get('name')
});
newTag.save();
This sends the following json (as seen in the Network tab of Chrome as the Request Payload):
{"data":{"attributes":{"name":"photos","created_at":null,"updated_at":null},"type":"tags"}}
But Rails only gets (as verified by printing out the params in the create method of the TagsController):
{"controller"=>"tags", "action"=>"create"}
And it throws the following error:
ActionController::ParameterMissing (param is missing or the value is empty: tag)
And here is my controller code:
# app/controllers/tags_controller.rb
class TagsController < ApplicationController
def create
tag = Tag.create!(tag_params)
render json: {status: "success"}
end
private
def tag_params
puts params
params.require(:tag).permit(:name)
end
end
What's the trick to get ember and rails to understand each other? Since ember is sending the "type" in the payload, can I get Rails to understand that this is the model and thus fulfill the requirement I've set that "tag" be present in the params?
ember.js ruby-on-rails-5 fastjsonapi
ember.js ruby-on-rails-5 fastjsonapi
edited Nov 18 at 3:24
asked Nov 12 at 5:45
wetjosh
2,58031728
2,58031728
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
After rereading the action controller overview I learned I had to include the 'Content-Type': 'application/json'
header in my request. I accomplished this by customizing my application adapter in Ember:
// app/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
init() {
this._super(...arguments);
this.set('headers', {
'Content-Type': 'application/json'
});
}
});
The next problem I had to deal with was changing my use of strong parameters in the Rails controller:
# app/controllers/tags_controller.rb
def tag_params
params.require(:data).require(:attributes).permit(:name)
end
Hope this helps someone else.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256482%2frails-actioncontrollerparametermissing-error-when-creating-new-record-in-ember%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
After rereading the action controller overview I learned I had to include the 'Content-Type': 'application/json'
header in my request. I accomplished this by customizing my application adapter in Ember:
// app/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
init() {
this._super(...arguments);
this.set('headers', {
'Content-Type': 'application/json'
});
}
});
The next problem I had to deal with was changing my use of strong parameters in the Rails controller:
# app/controllers/tags_controller.rb
def tag_params
params.require(:data).require(:attributes).permit(:name)
end
Hope this helps someone else.
add a comment |
After rereading the action controller overview I learned I had to include the 'Content-Type': 'application/json'
header in my request. I accomplished this by customizing my application adapter in Ember:
// app/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
init() {
this._super(...arguments);
this.set('headers', {
'Content-Type': 'application/json'
});
}
});
The next problem I had to deal with was changing my use of strong parameters in the Rails controller:
# app/controllers/tags_controller.rb
def tag_params
params.require(:data).require(:attributes).permit(:name)
end
Hope this helps someone else.
add a comment |
After rereading the action controller overview I learned I had to include the 'Content-Type': 'application/json'
header in my request. I accomplished this by customizing my application adapter in Ember:
// app/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
init() {
this._super(...arguments);
this.set('headers', {
'Content-Type': 'application/json'
});
}
});
The next problem I had to deal with was changing my use of strong parameters in the Rails controller:
# app/controllers/tags_controller.rb
def tag_params
params.require(:data).require(:attributes).permit(:name)
end
Hope this helps someone else.
After rereading the action controller overview I learned I had to include the 'Content-Type': 'application/json'
header in my request. I accomplished this by customizing my application adapter in Ember:
// app/adapters/application.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
init() {
this._super(...arguments);
this.set('headers', {
'Content-Type': 'application/json'
});
}
});
The next problem I had to deal with was changing my use of strong parameters in the Rails controller:
# app/controllers/tags_controller.rb
def tag_params
params.require(:data).require(:attributes).permit(:name)
end
Hope this helps someone else.
answered Nov 18 at 5:11
wetjosh
2,58031728
2,58031728
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53256482%2frails-actioncontrollerparametermissing-error-when-creating-new-record-in-ember%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown