ruby-on-rails - 在rails的嵌套属性中输入redirect_to的内容是什么?
问题描述
我的问题是如何在删除、创建、更新操作完成后重定向到事件显示页面。
我是 Rails 的新手,所以请帮助我。我有这样的路线文件。
resources :occasions do
resources :events
end
resources :events do
resources :event_details
end
我的 event_detail 控制器是:
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
现在,我所拥有的是 Occasion 有许多事件,如路线所示,事件有许多 event_details。但是,在我的控制器中我没有机会,所以在我删除或更新我的 event_detail 后,我无法路由到http://localhost:3000/occasions/1/events/1页面。
我的 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
还有我在 event#show 页面中的视图文件:
<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>
我可以创建一个 event_detail 但我必须刷新页面并手动转到http://localhost:3000/occasions/1/events/1以查看新创建。在创建 event_detail 后有什么办法,我可以重定向回这个“ http://localhost:3000/occasions/1/events/1 ”页面。任何帮助将不胜感激。
我得到的错误: 在此处输入图像描述
解决方案
首先,您需要更改路线。
resources :occasions do
resources :events do
resources :event_details
end
end
然后,您可以发布您的 rake 路线,并根据场合索引或事件索引的路线进行路线。
推荐阅读
- google-apps-script - JSSoup - SyntaxError: Unexpected token '<' Apps 脚本
- python - 如何使用函数中的数据框并返回响应以下载 csv 文件 - Flask
- javascript - 如何在 RxJs Subsciption 数组中使用 switchMap?
- spring-cloud-stream - Spring Cloud Stream 函数路由器输出尝试绑定到 Kafka 主题
- javascript - Wordpress Vanilla JS Ajax 加载更多帖子 - 偏移/重复帖子的问题
- twilio - 检查是否通过 API 配置消息传递活动配置
- ruby - 如何为 list_user_messages 发送 gmail api 的查询参数?
- graphql - AppSync:管道中间的力场解析器
- r - 如何在 R 中使用 purrr 的 map 函数将 xml-nodesets(使用 rvest 创建)放入 tibble?
- ios - Swift - 在函数外部声明变量时导致无限循环