Rails 4 find_or_create_by_name

2 autocomplete ruby-on-rails associations ruby-on-rails-4

我有一个用户和大学之间的关联,具有自动完成功能,用户可以选择大学,如果成立,否则他们创建一个新的大学,但创建方法不起作用

这是我的用户模型

  def university_name
    university.try(:name)
  end

  def university_name=(name)
    self.university = University.find_or_create_by_name(name) if name.present?
  end
Run Code Online (Sandbox Code Playgroud)

这是我的用户表单视图

<div class="form-group">
  <%= f.label :university_name, "Nom de l'université", class: "nom-universite" %><br />
  <%= f.text_field :university_name, data: {autocomplete_source: University.order(:name).map(&:name) }, class: "form-control form-newuniver" %>
</div> 
Run Code Online (Sandbox Code Playgroud)

我在用户配置文件显示视图中也有此代码

  <p>
    <strong>Université:</strong>
       <%= @user.university_name %>
  </p>
Run Code Online (Sandbox Code Playgroud)

这是我的自动完成Jquery代码

jQuery ->
  $('#user_university_name').autocomplete
    source: $('#user_university_name').data('autocomplete-source')
Run Code Online (Sandbox Code Playgroud)

Kir*_*rat 11

使用

  def university_name=(name)
    self.university = University.find_or_create_by_name(name) if name.present?
  end
Run Code Online (Sandbox Code Playgroud)

使用Universityie,而不是模型名称university.

另外,在Rails4中你可以使用:

University.find_or_create_by(name: name)
Run Code Online (Sandbox Code Playgroud)

为了访问上述方法:

例如:对于用户

@user.university_name= "Stanford"
Run Code Online (Sandbox Code Playgroud)