所以我第一次尝试实现多态关联,并且遇到了一些麻烦。
我正在尝试允许用户在联系人或组织上留言。但在我提交说明后,我遇到了路由错误。
Here is the error I'm receiving (image)
以下是路线:
Here are my routes (screenshot)
这是我的 routes.rb 文件:
Rails.application.routes.draw do
get 'welcome/index'
resources :organizations do
resources :contacts do
resources :notes, module: :contacts
end
resources :notes, module: :organizations
end
root 'welcome#index'
end
这是我的 notes_controller.rb 文件:
class NotesController < ApplicationController
def create
@note = @noteable.notes.new note_params
redirect_to @noteable, notice: "Your note was successful!!!"
end
private
def note_params
params.require(:note).permit(:note_title, :note_body)
end
end
这是我的 contacts / notes_controller.rb 文件:
class Contacts::NotesController < ApplicationController
private
def set_noteable
@noteable = Contact.find(params[:contact_id])
end
end
这是我的 oranizations / notes_controller.rb 文件:
class Organizations::NotesController < ApplicationController
private
def set_noteable
@noteable = Organization.find(params[:organization_id])
end
end
这是我的 view / notes / _form.html.rb 文件:
<h1>New Note</h1>
<%= form_for [noteable, Note.new] do |form| %>
<p>
<%= form.label :note_title %><br>
<%= form.text_field :note_title %>
</p>
<p>
<%= form.label :note_body %><br>
<%= form.text_area :note_body %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
如果您还需要其他任何东西,我会提供!提前谢谢!
答案 0 :(得分:0)
尝试更改此内容:
resources :organizations do
resources :contacts do
resources :notes, module: :contacts
end
resources :notes, module: :organizations
end
这些行:
resources :organizations do
resources :contacts do
resources :notes
end
resources :notes
end
您不需要那里的模块,因为它们已经由父资源确定范围。
同时将contacts/notes_controller.rb
移至organizations/contacts/notes_controller.rb
。确保您还将视图移动到相应的文件夹中。
希望有所帮助:)