加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails 3.2中的奇怪路由错误

发布时间:2020-12-17 02:04:36 所属栏目:百科 来源:网络整理
导读:我正在实现一个应用程序,我想在其中更改应用程序的设置. 这样做我得到一个错误 no routes matches {:action="show",:controller="settings",format="nil"} 点击打开的新设置标签. 我的index.html如下: – h1Listing settings/h1table class="table table-st
我正在实现一个应用程序,我想在其中更改应用程序的设置.
这样做我得到一个错误

no routes matches {:action=>"show",:controller=>"settings",format=>"nil"}

点击打开的新设置标签.

我的index.html如下: –

<h1>Listing settings</h1>

<table class="table table-striped table-bordered">
  <tr>
    <th>ID</th>
    <th>Name</th>
    <th>Value</th>
    <th>Description</th>
    <th>Edit</th>
    <th>Delete</th>
  </tr>

  <% @settings.each do |c| %>
  <tr>
    <td><%= c.id %> &nbsp;</td>
    <td><%= c.name %>&nbsp;</td>
    <td><%= c.value %>&nbsp;</td>
    <td><%= c.description %>&nbsp;</td>
    <td><%= link_to 'Edit',{:action => 'edit',:id => c.id} %> &nbsp;</td>
    <td><%= link_to 'Delete',{:action => 'delete',:id => c.id},:data => { :confirm => "Are you sure you want to delete this value?" } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Setting',{:action => 'new'} %>

我的设置控制器如下: –

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

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

  # GET /setting/1
  # GET /setting/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 /setting/new
  # GET /setting/new.json
  def new
    @setting = Setting.new

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

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

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

    respond_to do |format|
      if @setting.save
        format.html { redirect_to @setting,notice: 'Setting 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 /setting/1
  # PUT /setting/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: 'Setting 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 /setting/1
  # DELETE /setting/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

我的new.html如下: –

<h1>New settings</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 %> 

Id: <%= f.text_field :id %><br>
Name: <%= f.text_field :name %><br>
Values: <%= f.text_field :value %><br>
Description: <%= f.text_field :description %><br>

<% end %> 

<%= link_to 'Back',settings_path %>

我的routes.rb如下: –

Lms::Application.routes.draw do

     resources :books do
        member do
         post 'add'
         post 'remove'
        end

        collection do
         get  'add'
         get  'list' => "books#index"
         post 'get_books'
         get  'get_books'
        end
      end

      resources :books

      resources :book_transactions

      resources :book_issues

      resources :book_holds


      resources :categories


      resources :users


      resources :admins


      resources :library_locations


      resources :lov_values



      resources :loan_fines

      resources :lov_names

      resources :loans_fines do

       member do
         post 'add'
         post 'remove'
        end

        collection do
         get  'add'
         get  'list' 
         post 'get_loans_fines'
         get  'get_loans_fines'
        end
      end

       resources :settings do
         member do
         post 'add'
         post 'remove'
        end

        collection do
         get  'add'
         get  'list' 
         post 'get_settings'
         get  'get_settings'
        end
      end

      root :to => 'books#index'

  match ':controller(/:action(/:id))(.:format)'

奇怪的是,当我点击新动作时它会/重定向到show动作..我有点困惑为什么会发生这种情况..

有人可以帮我弄这个吗..

解决方法

要检查您的路线,您可以运行

rake routes

检查您是否正确定义了路线.我也建议使用

<%= link_to "New Setting",new_setting_pah %>

对于您的路由定义,您没有定义除添加或删除之外的其他方法的路由.
我建议你阅读有关rails路线的this精彩教程

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读