我有一个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
答案 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| %>
并且不要忘记允许控制器中的参数