无法弄清楚路由错误的来源

时间:2017-12-08 05:58:53

标签: ruby-on-rails ruby

所以我第一次尝试实现多态关联,并且遇到了一些麻烦。

我正在尝试允许用户在联系人或组织上留言。但在我提交说明后,我遇到了路由错误。

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 %>

如果您还需要其他任何东西,我会提供!提前谢谢!

1 个答案:

答案 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。确保您还将视图移动到相应的文件夹中。

希望有所帮助:)