2011-07-05 50 views
0

所以這只是讓我瘋狂!我瀏覽了大量的帖子,無法讓我的應用程序工作..我希望SO社區可以。沒有方法錯誤 - 類的未定義方法

所以,我有一個RoR應用程序,我可以創建一個新事件。

當我到localhost:3000/events和localhost:3000/events/new都加載正確,看起來不錯。這是問題。當我在本地主機提交的事件:3000 /事件/新形式的信息添加到數據庫中,但我得到了以下錯誤:

未定義的方法`event_path」爲#<#:0x00000100a15800>

下面是一些(希望)相對碼位:

視圖/活動/ create.html.erb

<%= simple_form_for(@event) do |f| %> 
<%= f.input :name %> 
<%= f.input :date %> 
<%= f.input :location %> 
<%= f.input :organization %> 
<%= f.input :description %> 
<%= f.submit "Create Event"%> 

<%端%>

控制器/events_controller.rb

class EventsController < ApplicationController 
respond_to :html 

    def index 
    @all_events = Event.all 
    end 

    def show 
     @event = Event.find_by_name(params[:id]) 
    end 

    def new 
    respond_with(@event = Event.new) 
    end 

    def edit 
    @event = Event.find_by_name(params[:id]) 
    end 

    def create 
    @event = Event.create(params[:event]) 
    if @event.valid? 
     flash[:notice] = "Event successfully created" 
    end 
    end 

    def update 
@event = Event.find_by_name(params[:id]) 
@event.update_attributes(params[:event]) 
if @event.valid? 
    flash[:notice] = "Event successfully updated" 
end 
respond_with(@event) 
    end 

    def destroy 
    @event = Event.find_by_name(params[:id]) 
    if @event.destroy 
     flash[:notice] = "Event successfully deleted" 
    end 
    respond_with(@event) 
    end 
end 

模型/ event.rb

class Event < ActiveRecord::Base 
    validates_presence_of :name 
    has_and_belongs_to_many :organizations 

    attr_accessible :name, :date, :location, :organization, :description 
    attr_accessor :organizations 

    end 

配置/ routes.rb中(僅相關部分)

resources :events, :only => [:index, :new, :create, :edit] 

真的很棒eciate可以提供任何幫助......我是Ruby on Rails的新手,所以我只是想把這件事情弄清楚。

謝謝!

凱文

回答

1

您創建或更新的方法後,您重定向到@event,這將重定向到您的活動的節目頁面。您尚未使用:only子句爲展示,更新和銷燬頁面生成路線。您可以在控制檯上運行rake routes來驗證這一點。刪除:only clause,它會工作。

+0

感謝您的幫助......我將其更改爲只有 資源:活動 但現在,當我創建活動時,它只停留在/ events/new頁面上。我如何讓它重定向到/ events頁面? 謝謝! –

+0

在你的創建方法中,你可以根據你的意願使用redirect_to @event重定向到事件顯示頁面或任何其他頁面(redirect:action =>:index),並在else子句中使用render:new來顯示新頁面,如果表格中有任何錯誤。 – felix