找不到与React Nested表单相关的名称关联

时间:2018-12-29 18:46:22

标签: ruby-on-rails ruby reactjs

在设置了与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模型问题?

1 个答案:

答案 0 :(得分:0)

针对经历过此问题的人

只需使用: accepts_nested_attributes_for

**has_one/has_many** has_one/has_many through