Ruby on rails 在rails中的嵌套属性中键入什么?

Ruby on rails 在rails中的嵌套属性中键入什么?,ruby-on-rails,redirect,routes,Ruby On Rails,Redirect,Routes,我的问题是,在完成删除、创建和更新操作后,如何重定向到事件显示页面 我是rails的新手,所以请帮助我。我有这样的路由文件 resources :occasions do resources :events end resources :events do resources :event_details end 我的事件详细控制器是: before_action :set_event before_action :set_event_detail, exc

我的问题是,在完成删除、创建和更新操作后,如何重定向到事件显示页面

我是rails的新手,所以请帮助我。我有这样的路由文件

resources :occasions do
    resources :events
  end

  resources :events do
    resources :event_details
  end

我的事件详细控制器是:

before_action :set_event
  before_action :set_event_detail, except: [:new, :create]

  def new
    @event_detail = EventDetail.new
  end

  def create
    @event_detail = EventDetail.new(event_detail_params)
    @event_detail.event = @event

    @event_detail.save
    redirect_to
  end

  def edit

  end

  def update
    @event_detail.update(event_detail_params)
  end

  def destroy
    @event_detail.destroy
    redirect_to ??
  end


  private

  def set_event
    @event = Event.find(params[:event_id])
  end

  def set_event_detail
    @event_detail = EventDetail.find(params[:id])
  end

  def event_detail_params
    params.require(:event_detail).permit(:capacity, :start_time, :end_time)
  end
现在,我所知道的是,路线上显示了很多事件,事件有很多事件细节。但是,在我的控制器中,我没有机会,所以在删除或更新我的事件详细信息后,我无法路由到页面

我的rake路由文件

  rake routes
                   Prefix Verb   URI Pattern                                                                              Controller#Action
         new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
             user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
     destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
        new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
       edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
            user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                          PUT    /users/password(.:format)                                                                devise/passwords#update
                          POST   /users/password(.:format)                                                                devise/passwords#create
 cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
    new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
   edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
        user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                          PUT    /users(.:format)                                                                         devise/registrations#update
                          DELETE /users(.:format)                                                                         devise/registrations#destroy
                          POST   /users(.:format)                                                                         devise/registrations#create
         teacher_students GET    /teachers/:teacher_id/students(.:format)                                                 students#index
                          POST   /teachers/:teacher_id/students(.:format)                                                 students#create
      new_teacher_student GET    /teachers/:teacher_id/students/new(.:format)                                             students#new
     edit_teacher_student GET    /teachers/:teacher_id/students/:id/edit(.:format)                                        students#edit
          teacher_student GET    /teachers/:teacher_id/students/:id(.:format)                                             students#show
                          PATCH  /teachers/:teacher_id/students/:id(.:format)                                             students#update
                          PUT    /teachers/:teacher_id/students/:id(.:format)                                             students#update
                          DELETE /teachers/:teacher_id/students/:id(.:format)                                             students#destroy
                 teachers GET    /teachers(.:format)                                                                      teachers#index
                          POST   /teachers(.:format)                                                                      teachers#create
              new_teacher GET    /teachers/new(.:format)                                                                  teachers#new
             edit_teacher GET    /teachers/:id/edit(.:format)                                                             teachers#edit
                  teacher GET    /teachers/:id(.:format)                                                                  teachers#show
                          PATCH  /teachers/:id(.:format)                                                                  teachers#update
                          PUT    /teachers/:id(.:format)                                                                  teachers#update
                          DELETE /teachers/:id(.:format)                                                                  teachers#destroy
          occasion_events GET    /occasions/:occasion_id/events(.:format)                                                 events#index
                          POST   /occasions/:occasion_id/events(.:format)                                                 events#create
       new_occasion_event GET    /occasions/:occasion_id/events/new(.:format)                                             events#new
      edit_occasion_event GET    /occasions/:occasion_id/events/:id/edit(.:format)                                        events#edit
           occasion_event GET    /occasions/:occasion_id/events/:id(.:format)                                             events#show
                          PATCH  /occasions/:occasion_id/events/:id(.:format)                                             events#update
                          PUT    /occasions/:occasion_id/events/:id(.:format)                                             events#update
                          DELETE /occasions/:occasion_id/events/:id(.:format)                                             events#destroy
                occasions GET    /occasions(.:format)                                                                     occasions#index
                          POST   /occasions(.:format)                                                                     occasions#create
             new_occasion GET    /occasions/new(.:format)                                                                 occasions#new
            edit_occasion GET    /occasions/:id/edit(.:format)                                                            occasions#edit
                 occasion GET    /occasions/:id(.:format)                                                                 occasions#show
                          PATCH  /occasions/:id(.:format)                                                                 occasions#update
                          PUT    /occasions/:id(.:format)                                                                 occasions#update
                          DELETE /occasions/:id(.:format)                                                                 occasions#destroy
      event_event_details GET    /events/:event_id/event_details(.:format)                                                event_details#index
                          POST   /events/:event_id/event_details(.:format)                                                event_details#create
   new_event_event_detail GET    /events/:event_id/event_details/new(.:format)                                            event_details#new
  edit_event_event_detail GET    /events/:event_id/event_details/:id/edit(.:format)                                       event_details#edit
       event_event_detail GET    /events/:event_id/event_details/:id(.:format)                                            event_details#show
                          PATCH  /events/:event_id/event_details/:id(.:format)                                            event_details#update
                          PUT    /events/:event_id/event_details/:id(.:format)                                            event_details#update
                          DELETE /events/:event_id/event_details/:id(.:format)                                            event_details#destroy
                   events GET    /events(.:format)                                                                        events#index
                          POST   /events(.:format)                                                                        events#create
                new_event GET    /events/new(.:format)                                                                    events#new
               edit_event GET    /events/:id/edit(.:format)                                                               events#edit
                    event GET    /events/:id(.:format)                                                                    events#show
                          PATCH  /events/:id(.:format)                                                                    events#update
                          PUT    /events/:id(.:format)                                                                    events#update
                          DELETE /events/:id(.:format)                                                                    events#destroy
                     root GET    /                                                                                        homeroutes#routes
       rails_service_blob GET    /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
rails_blob_representation GET    /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
       rails_disk_service GET    /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
update_rails_disk_service PUT    /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
     rails_direct_uploads POST   /rails/active_storage/direct_uploads(.:format)                                           active_storage/direct_uploads#create

我的事件控制器

  # before_action :authenticate_user!
  before_action :set_occasion, expect: [:index, :show]
  before_action :set_event, except: [:new, :create]
  # after_action :verify_authorized

  def new
    @event = Event.new
    # authorize @event
  end

  def create
    @event = Event.new(event_params)
    @event.occasion = @occasion
    # authorize @event
    @event.save
    redirect_to occasion_path(@occasion)
  end

  def edit
  # authorize @event
  end

  def show
    # authorize @event
  end

  def update
    # authorize @event
    @event.update(event_params)
    redirect_to occasion_path(@occasion)
  end

  def destroy
    # authorize @event
    @event.destroy
    redirect_to occasion_path(@occasion)
  end

  private

  def set_event
    @event = Event.find(params[:id])
  end

  def set_occasion
    @occasion = Occasion.find(params[:occasion_id])
  end

  def event_params
    params.require(:event).permit(:name, :location, :description, :isMakeAhead)
  end
end
事件#显示页面中的我的查看文件:

<h1>Event Info</h1>


<table>
  <thead>
  <tr>
    <td>Name</td>
    <td>Location</td>
    <td>Description</td>
    <td>Make ahead</td>
    <td>Capacity</td>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td><%= @event.name %></td>
    <td><%= @event.location %></td>
    <td><%= @event.description %></td>
    <td><%= @event.isMakeAhead %></td>
  </tr>
  </tbody>
</table>

<%= render @event.event_details %>
<p><%= link_to "Create Time slots", new_event_event_detail_path(@event,@event_detail) %></p>
事件信息
名称
地方
描述
领先
容量

我可以创建事件详细信息,但我必须刷新页面并手动转到以查看新创建的内容。在创建事件详细信息后,是否有任何方法可以重定向回此“”页面。任何帮助都将不胜感激

我得到的错误是:

删除:索引和:显示,路由定义中除外,然后在创建/更新后,尝试:

redirect_to event_event_detail_path(@event_detail)
销毁后,将不会有@event\u详细信息可重定向到,因此您可能希望:

redirect_to event_details_path

。。。将向您展示您的申请路线,并为这些黑暗时刻带来光明


redirect\u to
采用路径参数,例如
events\u path
重新记录到events索引操作,或'event\u event\u detail\u path(@event\u detail)重新定向到@event\u detail show操作。您可以使用redirect_通知客户端(浏览器)转到路由中列出的应用程序的任何部分,甚至是相对或绝对URL。稍后,您将了解到您还可以添加各种参数和HTTP状态代码。

首先,您需要更改路由

resources :occasions do
    resources :events do
      resources :event_details
    end
end
然后,您可以发布您的rake路由,并根据事件索引或事件索引的路由进行路由。

您可以这样做

redirect_to event_path(@event)

我输入代码后出现的错误是#的未定义方法'event_detail_path'。您的意思是?event_detail_params def create@event_detail=EventDetail.new(event_detail_params)@event_detail.event=@event@event_detail.save重定向_到event_detail_路径(@event_detail)endRight,它的名称空间。。。从路由定义中删除:show,然后再次运行rake路由,它将向您显示路径。rails路由指南也将帮助您了解许多事情,并为您提供一个新的角度来规划应用程序结构。谢谢傅,非常感谢,先生,在发布之前必须开始考虑我的评论!在遵循了你提到的所有建议之后,我仍然会遇到同样的错误。谢谢。但是rails文档说不要深入嵌套多个资源。这是一个好的选择吗?Akhil是对的,它可以工作!继续这样做,然后再次运行
rake routes
,看看它是什么样子。Pandey ji,如果要去参加活动,我需要一个场合id。因此,正如我提到的,我的资源不包括场合。所以重定向到事件路径首先搜索事件id,然后搜索我当前路由中没有的事件id。Jay Nepal.
event GET/events/:id(:format)
我怀疑您是否需要场合id?你想去哪里?在偶发事件中?我所拥有的是偶发事件有很多。事件有很多场合。所以,在《盛会》的节目页面上,有一些活动的列表。现在,在每个事件的显示页面下都有许多事件详细信息(时间段等)。现在,在我创建了一个event_details之后,我想转到event_show页面,它嵌套在一个场合中。因此,将事件重定向到事件路径(@event)将尝试查找时机,这在事件详细信息控制器中不可用。Hajur le malai导师garney ho bhane ma paisa Tirra padhna tayar chu.当然,我可以根据您所指的指导您的路线应该是
资源:场合做资源:事件做资源:事件细节结束
我需要查看视图,但我需要参考所有代码来解决这个问题,您能给出代码吗这是我的电子邮件ynique。adhar@gmail.com
redirect_to event_path(@event)