после установки простой ассоциации mas_one с помощью rails, я пытался вложить форму с реакцией, но в логах rails показывает это сообщение:
ArgumentError (Нет ассоциации для имени location'. Has it been
defined yet?):
app/models/post.rb:17:in
'app / models / post.rb: 3: в `'
пост модели имеет одно местоположение:
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 });
}
Итак,Я пытался изменить местоположение на местонахождение, и в журнале появляется та же ошибка.
Итак, вопрос в том, является ли проблемаact.js или проблема модели rails?