2015-12-06 2 views
2

У меня проблема маршрутизации. Когда я нажимаю кнопку «Отправить» в форме редактирования для события, я перенаправляется на страницу с .id вместо/id, которая явно не существует и создает ошибку. Любое понимание будет высоко оцененПуть Rails показывает значение .id not/id при обновлении

error: No route matches [PATCH] "/event.2" 
    Rails.application.routes.draw do 

    root 'welcome#welcome' 
    get '/user/:id/' => 'users#main' 
    get '/event' => 'events#index' 
    get '/event/new/' => 'events#new' 
    get '/event/:id/' => 'events#main' 
    post 'event' => 'events#create' 
    delete '/logout' => 'sessions#destroy' 
    post '/submit' => 'welcome#submit' 


    resources :events do 
     member do 
      get :coming, :going 
      post :destroy, :update 
     end 
    end 

    resources :users do 
     member do 
      get :following, :followers 
     end 
    end 
    resources :friends,  only: [:create, :destroy] 
    resources :comings,  only: [:create, :destroy] 
    resources :relationships, only: [:create, :destroy] 

    get 'auth/:provider/callback', to: 'sessions#create' 
    get 'logout', to: 'sessions#destroy' 

     enter code here 

    end 

#events controller methods# 
def edit 
    @event = Event.find(params[:id]) 

end 


    def update 
    @event = Event.find(params[:id]) 
    respond_to do |format| 
     if @event.update(event_params) 
      format.html { redirect_to @event } 
      else 
      format.html { render :edit } 
     end 
    end 
    end 

#edit view# 
<!DOCTYPE html> 
<div class="edit-event"> 
    <div class="container"> 

    <h2>Tell us about your dog!</h2> 
    <div class="edit-area"> 
     <%= form_for(@event) do |u| %> 
     <div class="field"> 
      Event Name: 
      <%= u.text_field :event_name %> 
      Event Place: 
      <%= u.text_field :place %> 
      <%= u.submit "Submit"%> 
     </div> 
     <% end %> 
    </div> 

</div> 

обновляемых Маршрутов файл

Rails.application.routes.draw do 

root 'welcome#welcome' 
get '/user/:id/' => 'users#main' 
get '/event' => 'events#index' 
get '/event/new/' => 'events#new' 
get '/event/:id/' => 'events#main' 
post 'event' => 'events#create' 
delete '/logout' => 'sessions#destroy' 
post '/submit' => 'welcome#submit' 


resources :events, only: [:edit, :update] 

resources :users do 
    member do 
     get :following, :followers 
    end 
end 
resources :friends,  only: [:create, :destroy] 
resources :comings,  only: [:create, :destroy] 
resources :relationships, only: [:create, :destroy] 

get 'auth/:provider/callback', to: 'sessions#create' 
get 'logout', to: 'sessions#destroy' 
+0

Почему у вас есть дополнительные маршруты для событий (за пределами блока ресурсов)? Каков путь, по которому вы перенаправлены на –

+0

@FrederickCheung Я не уверен, что вы имеете в виду. Я обновил форму маршрутов, но получаю ту же ошибку. Какие модификации вы предлагаете? – BNYCS92

+0

@ BNYCS92 что вышло из истории? Было бы полезно, если вы сможете опубликовать свое решение (что бы вы ни помнили сейчас) –

ответ

1

Я думаю, что в этом случае он не знает точно, какой путь использовать, когда вы делаете redirect_to. Я бы порекомендовал изменить resources :events на resources :events, only: [:edit, :update] и удалил ручные пути, созданные для подобных маршрутов. Другой вариант - назвать ручные маршруты и использовать их в своих перенаправлениях и link_tos. get 'event/:id', to: 'events#edit', as: :edit_event

+0

Я внес изменения, но, к сожалению, я получаю такую ​​же ошибку. Любые идеи почему? – BNYCS92

+0

Я видел, когда вы создавали пути вручную, начиная с косой черты и содержащие именованный параметр, он меняет его на. Вместо использования косой черты для пути – CWitty

+0

@ BNYCS92 Я обновил свой ответ, удалите ручные пути, которые вызовет ресурсы, вызовет – CWitty