Ruby on rails Rails 3.2中没有路由匹配错误
我得到以下错误Ruby on rails Rails 3.2中没有路由匹配错误,ruby-on-rails,ruby-on-rails-3,routing,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Routing,Ruby On 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="
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" %>
<% end %>
我的设置控制器:
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
请检查并通知我。成功保存后,您的
创建
操作将重定向到显示
但是,您的routes.rb
没有Show
的条目,即使您的控制器有Show
方法
你能试着运行这个命令吗?这将列出rails应用程序的所有有效路由。您只需使用资源:路由文件中的设置和rails RESTFUL路由将处理所有问题。您不需要显式地声明restful路由的HTTP谓词。
另外,在控制器的创建和更新操作中,使用@setting而不是@setting。您是否使用了“rails生成脚手架设置”命令?@ajt是的,我使用了该命令。@SrikanthVenugopalan我已编辑了该问题,请检查并告知我。请检查并告知我know@PeeVee,我正在调查,我怀疑某个地方有一个打字错误(可能是复数),我想猜猜是哪里。如果我有代码可以使用,可能会更容易。首先猜测-在您的创建中,if块具有
@设置。使用大写字母“S”保存。您能否尝试保存@设置
?在哪一行出现错误?我怀疑@设置
会给您带来问题。堆栈跟踪可能更好。
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