Has_many通过关联表单创建

时间:2017-11-24 21:10:38

标签: ruby-on-rails

我有一个has_many通过关联,我需要为UserGroup创建一个新记录,其中UserGroup是在Group控制器中创建的。

在我的groups控制器中我有这个方法

def add
  @usergroup = UserGroup.new
end

这是我的UserGroup.rb型号

class UserGroup < ApplicationRecord
  belongs_to :user
  belongs_to :group
end

add.html.erb视图中,我将其呈现为下面列出代码的表单。

<%= form_for(@usergroup) do |form| %>

  <div class="field">
    <%= form.label :user_id %>
    <%= form.text_field :user_id %>
  </div>

  <% form.text_field :group_id, value: @usergroup.id %>


  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

但是我收到了这个错误。

undefined method user_groups_path&#39;对于#&lt;#:0x007fba7c11aab0&gt;`

你不能用这种方式创建唱片吗?我希望将网址显示为http://localhost:3000/groups/4/add

我对Rails有点新,不同模型的表单让我感到困惑。有人可以帮我解决这个问题吗?

路线

Rails.application.routes.draw do
  resources :maps
  devise_for :users
  resources :groups do
    get 'add', on: :member
  end
  resources :rows

  root to: 'maps#index'
end

1 个答案:

答案 0 :(得分:0)

首先,您必须申报合适的路线。您前往post但设置get 'add'

post '/groups/:id/add'
resources :groups

因此,您获得add_group_path而不是发布add_groups_path

最好指定明确方法和网址:

<%= form_for @usergroup, method: 'post', url: add_groups_path do |form| %>

并且不要忘记允许控制器中的参数