我得到以下错误:没有路由匹配{:action=>"show",:controller=>"events"}
我的routes.rb文件有以下条目:
resources :events
我的events_controller.rb有以下内容:
def index
@events = Event.all
end
def show
@event = Event.find(params[:id])
end
我的展会活动页面有以下内容:
<h1>SHOW EVENT DETAILS</h1>
<%= @currevent.name %>
<br/><br/>
<%= button_to "Back",event_path %>
你知道我为什么会犯这个错误吗?提前感谢!
忘记包含我的index.html.erb事件:
<table border="1">
<% @events.each do |event| %>
<tr>
<td><%= event.name %></td>
<td><%= button_to 'Show', event %></td>
</tr>
<% end %>
</table>
<br/><br/>
<%= button_to "Back",home_path %>
我相信您想要events_path
或event_path(@event)
。
转到事件列表应该是<%= button_to "Back",events_path %>
(您缺少一个's')。
event_path
存在,它用于显示特定事件(错误消息中所述的show
操作,您应该给它一个Event
)。
显示页面出错。有2项更正-1.@curevent
需要是@event
2.event_path
应为events_path
<h1>SHOW EVENT DETAILS</h1>
<%= @event.name %>
<br/><br/>
<%= button_to "Back",events_path %>
event_path
应该是
events_path
有两种方法。最简单的方法是转到一个新的临时目录,并创建一个运行以下命令的新的干净Rails3项目:
cd /tmp
rails new tst
cd tst
rails generate scaffold event
然后,您可以查看apps/config/routes.rb、apps/controller/events_controller.rb和apps/views/events文件,以了解脚手架创建的文件与当前代码的不同之处。
或者,您可以尝试调试现有的代码。
在命令行中,运行rake routes
以确认事件控制器设置正确。你应该看到这样一行:
event GET /events/:id(.:format) {:action=>"show", :controller=>"events"}
这表明实际存在指向演出控制器的正确路径,并且指向控制器的路径应为apps/views/event/index.html.erb代码中的event
。
你什么时候得到错误的?当您试图显示事件索引路由时?