2013-03-09 71 views
0

我收到以下錯誤沒有航線的Rails 3.2

No route matches {:action=>"show", :controller=>"settings", :format=>nil} 

在落實設置/新匹配的錯誤。

我的設置/ new.html如下:

<h1>New setting</h1> 

<%= form_for @setting do |f| %> 
    <% if @setting.errors.any? %> 
    <div id="errorExplanation"> 
    <h2><%= pluralize(@setting.errors.count, "error") %> prohibited this setting from being saved:</h2> 
    <ul> 
    <% @setting.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
    <% end %> 
</br></br> 


Id: <%= f.text_field :id %><br> 
Name: <%= f.text_field :name %><br> 

<%= f.submit "Create" %>&nbsp;&nbsp; 

<% end %> 

我給設置的routes.rb文件是:

resources :settings do 
    member do 
    post 'add' 
    post 'remove' 
    get 'settings/id' 
    end 

    collection do 
    get 'add' 
    get 'list' => "settings#index" 
    post 'get_settings' 
    get 'get_settings' 
    end 
    end 

    resources :settings 

我的設置控制器:

class SettingsController < ApplicationController 
    # GET /Settings 
    # GET /Settings.json 
    def index 
    @settings = Setting.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @settings } 
    end 
    end 

    # GET /Settings/1 
    # GET /Settings/1.json 
    def show 
    @setting = Setting.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @setting } 
    end 
    end 

    # GET /Settings/new 
    # GET /Settings/new.json 
    def new 
    @setting = Setting.new 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @setting } 
    end 
    end 

    # GET /Settings/1/edit 
    def edit 
    @setting = Setting.find(params[:id]) 
    end 

    # POST /Settings 
    # POST /Settings.json 
    def create 
    @setting = Setting.new(params[:setting]) 

    respond_to do |format| 
     if @Setting.save 
     format.html { redirect_to @setting, notice: 'Lov value was successfully created.' } 
     format.json { render json: @setting, status: :created, location: @setting } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @setting.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /Settings/1 
    # PUT /Settings/1.json 
    def update 
    @setting = Setting.find(params[:id]) 

    respond_to do |format| 
     if @Setting.update_attributes(params[:setting]) 
     format.html { redirect_to @setting, notice: 'Lov value was successfully updated.' } 
     format.json { head :no_content } 
     else 
     format.html { render action: "edit" } 
     format.json { render json: @setting.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /Settings/1 
    # DELETE /Settings/1.json 
    def delete 
    @setting = Setting.find(params[:id]) 
    @setting.deleted = 1 
    @setting.save 

    respond_to do |format| 
     format.html { redirect_to settings_url } 
     format.json { render :json => { :success => true } } 
    end 
    end 
end 

我的耙路線如下: -

   add_settings POST /settings/:id/add(.:format)   settings#add 

      remove_settings POST /settings/:id/remove(.:format)   settings#remove 

     settings_id_settings GET /settings/:id/settings_id(.:format) settings#settings_id 

     add_settings_index GET /settings/add(.:format)    settings#add 

     list_settings_index GET /settings/list(.:format)    settings#index 

get_settings_settings_index POST /settings/get_settings(.:format)  settings#get_settings 

          GET /settings/get_settings(.:format)  settings#get_settings 

          GET /settings(.:format)     settings#index 

          POST /settings(.:format)     settings#create 

          GET /settings/new(.:format)    settings#new 

          GET /settings/:id/edit(.:format)   settings#edit 

          GET /settings/:id(.:format)    settings#show 

          PUT /settings/:id(.:format)    settings#update 

          DELETE /settings/:id(.:format)    settings#destroy 

          GET /settings(.:format)     settings#index 

          POST /settings(.:format)     settings#create 

          GET /settings/new(.:format)    settings#new 

          GET /settings/:id/edit(.:format)   settings#edit 

          GET /settings/:id(.:format)    settings#show 

          PUT /settings/:id(.:format)    settings#update 

          DELETE /settings/:id(.:format)    settings#destroy 

請檢查並讓我知道。

+0

您使用了「軌生成腳手架設置」,命令HTTP://guides.rubyonrails.org/getting_started.html#getting-up-and-running-quickly-with-scaffolding – ajt 2013-03-09 06:49:44

+0

@ajt 是的,我確實使用了它。 – Catmandu 2013-03-09 07:06:03

回答

0

您的Create操作在成功保存後重定向到Show

但是,即使您的控制器有Show方法,您的routes.rb也沒有Show的條目。

你可以試試運行這個命令rake routes?這將列出您的Rails應用程序的所有有效路線。

+0

@ SrikanthVenugopalan我編輯了這個問題,你可以檢查並讓我知道。 – Catmandu 2013-03-09 07:13:34

+0

。請檢查並讓我知道 – Catmandu 2013-03-09 07:32:20

+0

@PeeVee,我正在研究它,我的懷疑是有一個錯誤的地方(可能是多元化),我試圖猜測在哪裏。如果我有代碼玩,可能會更容易。 – 2013-03-09 07:36:50

0

你只需要使用資源:在你的路線文件和鋼軌的設置RESTFUL路線將照顧一切。您不需要明確說明HTTP動詞的安靜路由。
同樣在您的控制器的創建和更新操作中,使用@setting而不是@Setting。

+0

@nilay ..我實現它,但仍然得到相同的錯誤 – Catmandu 2013-03-09 11:14:29