【问题标题】:Rails 3 Paths not working as expectedRails 3 路径未按预期工作
【发布时间】:2012-05-11 11:31:05
【问题描述】:

我有一个为组织创建新活动的表单。路由是:

resource :organisations do
  resource :events
end

当我编辑一个事件时,如果成功,我会像这样路由回事件控制器中的显示操作:

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

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

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/名称。可能是我对路径生成的理解不够,但是如何达到我想要的结果呢?

【问题讨论】:

  • 我认为您需要将组织 ID 传递给 redirect_to organization_event_path,因为事件是在组织下创建的,因此组织可以通过组织 ID 识别。

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


【解决方案1】:

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

organisation_event_path(@organization, @event)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多