Hello :)
Alors j'ai un soucis avec Ruby on Rails
J'ai un formulaire pour faire un update, et quand je lance le submit j'ais cette erreur:
Unknown action
The action 'update' could not be found for GamesController
Pourtant je n'ai rien fais de spécial, un CRUD tout ce qu'il y a de plus classique, du coup je ne sais pas ce qui se passe :/
Mon controller:
class GamesController < ApplicationController
def update
@game = Game.find(params[:id])
@game.update(game_params)
end
private
def game_params
params.require(:game).permit(:title, :url, :prize, :game_type, :description, :short, :ended_at)
end
end
end
Mon formulaire:
<div>
<%= form_with model: game, method: :patch do |form| %>
<div>
<%= form.text_field :title %>
</div>
<div>
<%= form.text_field :game_type %>
</div>
<div>
<%= form.date_field :ended_at %>
</div>
<div>
<%= form.text_field :prize %>
</div>
<%= form.submit "Valider" %>
<% end %>
</div>
Et mes routes:
Rails.application.routes.draw do
root "games#index"
resources :comments
resources :games
resources :profiles do
get "/:section", to: "profiles#show"
end
resources :user_games, only: [ :index, :create, :destroy ]
get 'dashboard', to: "dashboards#index"
namespace :dashboards do
resources :games, only: [ :index, :show ]
end
devise_for :users
end
Quelqu'un a une idée d'où pourrait venir le problème? ^^'
Merci :)
Ok alors, mon formulaire est la view dashboard, du coup il est bloqué dans le controller dashboard/games, et du coup game_path
en controller ça fonctionne pas ça voulais quand même passer par le namespace dashboard
J'ai du faire ça:
url: "/games/" + game.id.to_s
Et la ça fonctionne, ça fait bricolé mais bon ^^'
yep, c'est games_controller
, pour le create
j'ai eu le même problème, j'ai été obligé de rajouter url: { controller: games_path, action: :create }
Et ça a fonctionné, du coup j'ai tenté la même chose avec l'update url: { controller: game_path(game), action: :update }
mais la ça me donne
No route matches {:action=>"update", :controller=>"games/1"}
Pourtant c'est bien pris en compte avec rails routes
:
game GET /games/:id(.:format) games#show
PATCH /games/:id(.:format) games#update
PUT /games/:id(.:format) games#update
DELETE /games/:id(.:format) games#destroy