Emm*_*uel 6 ruby-on-rails reactjs
我正在尝试向我的Rails应用程序提交一个简单的表单.我迷失了自己,没有任何工作.这是我试图做的:
var newUserForm = React.createClass({
propTypes: {
user: React.PropTypes.array
},
getInitialState: function() {
return {name: '', age: '', country: '' };
},
handleNameChange: function(e) {
this.setState({ name: e.target.value });
},
handleAgeChange: function(e) {
this.setState({ age: e.target.value });
},
handleCountryChange: function(e) {
this.setState({ country: e.target.value });
},
handleSubmit: function(e) {
e.preventDefault();
var name = this.state.name.trim();
var age = this.state.age.trim();
var country = this.state.country.trim();
if (!name || !age || !country) {
return;
}
this.setState({ name: '', age: '', country: '' });
var user = {user: this.state.user}
this.setState({data: user});
$.ajax({
url: '/users/new',
dataType: 'json',
type: 'POST',
data: {user: user},
success: function(data) {
this.setState({data: user});
}.bind(this),
error: function(xhr, status, err) {
this.setState({data: user});
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
render: function() {
return (
<form onSubmit={ this.handleSubmit }>
<input type="text" placeholder="User's name" value={ this.state.name } onChange={ this.handleNameChange } />
<input type="text" placeholder="His age" value={ this.state.age } onChange={ this.handleAgeChange } />
<input type="text" placeholder="Country of origin" value={ this.state.country } onChange={ this.handleCountryChange } />
<input type="submit" value="Post"/>
</form>
)
}
});
Run Code Online (Sandbox Code Playgroud)
我需要一些帮助.
class ToyController < ApplicationController
def index
@users = User.all
render component: 'usersList', props: { users: @users }
end
def new
@user = User.new
render component: 'newUserForm'
end
def create
@user = User.new(user_params)
if @user.save
render component: 'showUser', props: {user: @user }
else
render text: "Something went wrong."
end
end
private
def user_params
params.require(:user).permit(:name, :age, :country)
end
end
Run Code Online (Sandbox Code Playgroud)
Rails.application.routes.draw do
get '/users', to: 'toy#index'
get '/users/new', to: 'toy#new'
post '/users/new', to: 'toy#create'
end
Run Code Online (Sandbox Code Playgroud)
TL;DR:您很可能只需要重组您发送的 JSON 以包含“用户”密钥
您正在使用所谓的“强参数”,因此当您调用user_params并#create具有 时require(:user),如果 params 哈希没有该单词user作为键,则会引发您在上面看到的错误。
一种方法是重组您发送的数据以包含“用户”一词
例如:
{user: {name: 'test', age: 1}}
所以也许(可以修改你想要实现的上述结构)
$.ajax({
url: '/users/new',
dataType: 'json',
type: 'POST',
data: user,
success: function(data) {
this.setState({data: user});
}.bind(this),
error: function(xhr, status, err) {
//this.setState({data: user});
// console.error(this.props.url, status, err.toString());
}.bind(this)
});
Run Code Online (Sandbox Code Playgroud)
到
$.ajax({
url: '/users/new',
dataType: 'json',
type: 'POST',
data: {user: user},
success: function(data) {
this.setState({data: user});
}.bind(this),
error: function(xhr, status, err) {
//this.setState({data: user});
// console.error(this.props.url, status, err.toString());
}.bind(this)
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |