轨道3:布线有问题



我得到以下错误:没有路由匹配{: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_pathevent_path(@event)

转到事件列表应该是<%= button_to "Back",events_path %>(您缺少一个's')。

event_path存在,它用于显示特定事件(错误消息中所述的show操作,您应该给它一个Event)。

显示页面出错。有2项更正-1.@curevent需要是@event2.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

你什么时候得到错误的?当您试图显示事件索引路由时?

最新更新