2016-09-20 7 views
1

私はRORを初めて使いました。駐車許可証申請のためのページを作成しようとしています。この問題が発生しましたenter image description hereNoMethodError、#<#<クラス:0xbbb3ed0>のための未定義のメソッド `permits_path ':0xbbb34b0>

問題が見つかりませんでした。それとも、私は何かを逃した。どんな助けもありがとうございます。

は、これはこれは私の許可/ new.html.erb

<% provide(:title, 'New Permit') %> 
<h1>Permit Application</h1> 

<div class="row"> 
    <div class="col-md-6 col-md-offset-3"> 
    <%= form_for(@permit) do |f| %> 

     <%= render 'shared/error_messages' %> 
     <%= f.label :"Vehicle Type" %> 
     <%= f.text_field :vehicle_type, class: 'form-control' %> 

     <%= f.label :name %> 
     <%= f.text_field :name, class: 'form-control' %> 

     <%= f.label :"Student ID" %> 
     <%= f.text_field :studentid, class: 'form-control' %> 

     <%= f.label :department %> 
     <%= f.text_field :department, class: 'form-control' %> 

     <%= f.label :"Car Plate" %> 
     <%= f.text_field :carplate, class: 'form-control' %> 

     <%= f.submit "Confirm", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 

である私のpermit_controller.rb

class PermitController < ApplicationController 
    before_action :set_permit, only: [:show, :destroy] 
    def index 
    @permit = Permit.all 
    end 

    def new 
    @permit = Permit.new 
    end 

    def create 
    @permit = Permit.new(user_params) 
    if @permit.save 
     redirect_to root_path 
    else 
     flash[:success] = "Welcome to your profile!" 
    end 
    end 

    def destroy 
    end 

    def show 
    @permit = Permit.find(params[:id]) 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_permit 
    @permit = Permit.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def permit_params 
    params.require(:permit).permit(:vehicle_type, :name, :studentid, :department, :carplate, :duration,:permitstart,:permitend) 
    end 
end 

ですこれは代わりに私のroute.rb

Rails.application.routes.draw do 
    resources :users 
    resources :permit 
    get 'permit/destroy' 

    get 'permit/show' 

    root 'static_pages#home' 

    get 'homepage/index' 
    post 'permit' => 'permit#create' 
    get 'permitapplication' => 'permit#new' 
    get 'adminlogin' => 'admin_controller#index' 
    get 'contact'=> 'static_pages#contact' 
    get 'about' => 'static_pages#about' 
    get 'signup' => 'users#new' 
    get 'help' => 'static_pages#help' 
    post 'users' => 'users#create' 
    get 'login' => 'sessions#new' #Page for a new session 
    post 'login' => 'sessions#create' #Create a new session 
    delete 'logout'=>'sessions#destroy' #Delete a session 


    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 
+0

質問を解決した回答が見つかった場合は、それを解決策として受け入れることを検討してください。 – Tass

答えて

2

resources :permit使用であり、 resources :permits

+4

彼は 'PermitController'を' PermitsController'に変更したいと思うでしょう –

+0

コメント: –

+0

返事をくれてくれてありがとう、どうして私は許可の代わりに許可を使うべきですか?私はRubyMine IDEを使用していますが、オートコンプリート機能は許可を使用するように提案しています。 私はコントローラを許可として作成し、モデル名も許可です。私は後ろにプラスの必要がある理由は何ですか? –

2

ここで最大の問題は、routes.rbファイルにpermit/newがないことです。

すでに示唆されているとして、あなたはリソースを持つレール を活用するために、それは良いかもしれないがroutes.rbを

resources :permits

や線

get 'permit/destroy'
を削除するに

を呼び出します get 'permit/show'

など

+0

返信いただきありがとうございます。許可/新規はこの行では行えないため、 get 'permitapplication' => 'permit#new' なぜ許可証を使用する必要があるのか​​分かりますか?許可の代わりに?私は現在RubyMine IDEを使用していますが、オートコンプリート機能は許可の代わりに許可を使用することを提案します。 –

+1

@GaryVlc、あなたは** PermissionsControllerを使用する必要があるため、 'permits'を使うべきです。 (これはまた、あなたのコントローラの名前を変更する必要があるというこの記事の下で提案された理由です。)Railsルーティングについて読むことをお勧めします:http://guides.rubyonrails.org/routing.html – Tass

+0

この回答をさらに補完するために、 '<%= form_for(@permit)do | f | %> 'を使用します。これは、' Rails'が目的のルートを解釈することを前提としています。 (この場合は 'permits#new'です。)あなたはカスタム経路を使うようにフォームを更新するか、コントローラーと' routes.rb'を更新して 'The Rails Way 'のことをすることができます。 – Tass

0

私は様々な回答とコメントをまとめようとします。

config/routes.rbで現在の問題を解決するには、resources :permitresources :permitsに変更してください。これにより、アプリケーションで使用する7つのRESTfulルートがすべて公開されます。 (これは、それぞれのフォーム内から明示的に呼び出していない限り、カスタムpermitのルートを廃止します。)RESTfulルート/リソースの情報はこちらhttp://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

これはなぜ価値がありますか?

これは、アプリケーションがビュー(したがってフォーム)と組み合わせてコントローラアクションを使用することを知っている方法です。許可コントローラに編集アクションがあり、app/views/permits/edit.html.erbにフォームがあるとします。このページの編集フォーム内では、form_for @permitしか必要とせず、残りのすべてをRailsが行います。この特定のルートを使用していることがわかります。ルーティングについてお読みになることをお勧めしますRails.

Ruby on Railsは、開発者にとって使いやすいように慎重に作られていますので、ご注意ください。

関連する問題