Rails 3路径未按预期工作

时间:2012-05-11 11:31:06

标签: ruby-on-rails-3 path routes

我有一个表单可以为组织创建新事件。路由是:

resource :organisations do
  resource :events
end

当我编辑一个事件时,如果成功,我将路由回到事件控制器中的show动作:

def update
    @organisation = current_user.organisations.find(params[:organisation_id])
    @event = @organisation.events.find(params[:id])
    if @event.update_attributes(params[:event])
        # Handle a successful update.
        flash[:success] = "Event updated"
        redirect_to organisation_event_path
    else
        render 'edit'
    end
end

当我创建一个事件时,我也希望它重定向到事件show动作,实现如下:

def create
    @organisation = current_user.organisations.find(params[:organisation_id])
    @event = @organisation.events.create(params[:event])
    if @event.save
        flash[:success] = "Event added!"
        redirect_to organisation_event_path
    else
        render 'new'
    end
end

但是,这会产生以下错误:No route matches {:action=>"show", :controller=>"events"}

这是因为URI中没有事件ID /名称,据我所知。可能是我对路径生成缺乏了解,但我如何实现我想要的结果呢?

1 个答案:

答案 0 :(得分:0)

我不确定为什么你的第一个重定向工作,但organisation_event_path将需要两个参数,因为它是从两个资源的id - 组织和事件创建路径。所以,你应该这样称呼它:

organisation_event_path(@organization, @event)