"settings",-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:20:57 26 4
gpt4 key购买 nike

我正在实现一个应用程序,我想在其中更改应用程序的设置。
这样做时我收到一个错误

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

同时点击打开的 new settings标签。

我的 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'} %>

我的 settings controller如下:-
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)'

奇怪的是,当我点击 new 时它要/重定向到 show 的操作行动..我有点困惑为什么会这样..

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

最佳答案

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

rake routes



检查您是否正确定义了路线。我也建议使用
<%= link_to "New Setting", new_setting_pah %>

对于您的路由定义,除了添加或删除之外,您没有为其他方法定义路由。
我建议你阅读 this关于 Rails 路线的很棒的教程

关于ruby-on-rails - rails 3.2 中的奇怪路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com