Rails Не найдено связи для имени с вложенной формой React - PullRequest
0 голосов
/ 29 декабря 2018

после установки простой ассоциации 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?

1 Ответ

0 голосов
/ 29 декабря 2018

Для тех, кто проходит через эту проблему

просто используйте: accepts_nested_attributes_for

ниже **has_one/has_many** has_one/has_many through

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...