在设置了与rails的简单关联mas_one之后,我尝试使用react嵌套表单,但是在日志中rails会显示以下消息:
ArgumentError(未找到名称
中的关联location'. Has it been defined yet?): app/models/post.rb:17:in
'app / models / post.rb:3:in''
模型发布位置可定位
class Post < ApplicationRecord
belongs_to :user, touch: true
accepts_nested_attributes_for :location
has_one :locatable
has_one :location, through: :locatable
end
并在发布控制器中
def post_params
params.require(:post).permit(:title, :body, :user_id,
location_attributes: [:address])
end
我尝试使用的不是 accepts_nested_attributes_for:location ,而是使用:locatable 并且在post_params上使用 locatable_attributes 代替位置
在post.jsx上
我使用
buildFormData() {
let formData = new FormData();
formData.append("post[title]", this.state.post.title);
formData.append("post[body]", this.state.post.body);
formData.append("post[location_attributes][address]", this.state.address);
}
渲染
render() {
return (
<div className="form-group">
<label>Address</label>
<input
type="text"
name="location[]"
onChange={e => this.handleAddressChange(e)}
/>
{this.renderAddressInlineError}
</div>)
}
最后是函数
handleAddressChange(e) {
let { address } = this.state;
address = e.target.value;
this.setState({ address: address });
}
因此,我尝试将位置更改为可定位,并且日志中出现了相同的错误。
所以问题是:是react.js问题还是rails模型问题?
答案 0 :(得分:0)
针对经历过此问题的人
只需使用: accepts_nested_attributes_for
在**has_one/has_many**
下
has_one/has_many through