0

サイトの名前を所有者/管理者に変更しようとしていますが、ルーティング エラーが発生します。新しい財務レポート (http://localhost:3000/en/admin/financial_reports/new) を作成しようとすると、

No route matches {:controller=>"financial_reports", :format=>nil}

これが私のroutes.rbです(短縮)

scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
 root :to => 'sites#index'
 get "logout" => "sessions#destroy", :as => "logout"
 get "login" => "sessions#new", as: "login"
namespace :admin do
    root :to => "base#index"
    resources :financial_reports do
      collection do
        get :monthly
        get :yearly
      end
    end
  end
namespace :owner do
    root :to => "base#index"
  end
match "*path", to: "sites#not_found" # handles /en/fake/path/whatever
end
root to: redirect("/#{I18n.default_locale}") # handles /
match '*path', to: redirect("/#{I18n.default_locale}/%{path}")
end

これが私のコントローラーアプリ/コントローラー/管理者/金融_レポート_コントローラー.rbです

class Admin::FinancialReportsController < BaseController

def index @financial_reports = FinancialReport.all end

def new @financial_report = FinancialReport.new end

def create @financial_report = FinancialReport.new(params[:financial_report]) if @financial_report.save flash[:notice] = '財務レポートが正常にアップロードされました' redirect_to root_url else flash[:alert] = "財務レポートが正常にアップロードされませんでした" render " index" end end def yearly @financial_reports = FinancialReport.yearly end def Monthly @financial_reports = FinancialReport.monthly end end

と私の見解

app/views/admin/financial_reports/new.html.erb

<%= form_for(@financial_report) do |f| %>
<p>
  <%= f.label(:report_type) %> <br>
  <%= f.radio_button :report_type, "Monthly" %> Monthly |
  <%= f.radio_button :report_type, "Yearly" %> Yearly
</p>
<p>
  <%= f.file_field :file %>
</p>
<p>
  <%= f.submit "Upload Monthly Record" %>  
</p>
<% end %>

なぜこのエラーが発生するのか分かりますか? ありがとう

4

1 に答える 1

1
<%= form_for[:admin, @financial_report] do |f| %>
........................
.............
........

http://guides.rubyonrails.org/routing.html

Rails 名前空間と入れ子になったリソース

于 2012-04-19T19:14:28.643 に答える