Je suis nouveau dans Rails3, et je construis une application très simple (dans laquelle je ne veux pas d'AJAX). Quoi qu'il en soit, j'ai le index
y create
actions. Le site index
l'action contient le formulaire :
<%= form_for @message, url: promote_index_path do |f| %>
...
<% end %>
Mon promote_controller
ressemble à ça :
def index
@message = Message.new url: @last_video, message_body: @last_message
end
def create
@message = current_user.messages.new(params[:message])
@message.get_video_id
if @message.save
redirect_to promote_index_url, flash: {notice: "Promotion has been started"}
else
render 'index'
end
end
Tout cela fonctionne bien, sauf que lorsque le formulaire est soumis avec succès, et que la notification est affichée, si l'utilisateur tape sur F5
le formulaire se soumet à nouveau. Ce qui ne devrait pas être le cas, puisque je suis en train de faire redirect_to
après une sauvegarde réussie. Je crois que je fais quelque chose de fondamentalement mauvais ici, alors s'il vous plaît aidez-moi.
EDIT : Voici mon routes.rb
resources :home
resources :find
resources :promote
resources :settings
root to: 'home#index'
match 'auth/:provider/callback', to: 'sessions#create'
match 'auth/failure', to: redirect('/')
match 'logout', to: 'sessions#destroy', as: 'logout'
match 'find', to: 'find#index', as: 'find'
match 'promote', to: 'promote#index', as: 'promote'
match 'settings', to: 'settings#index', as: 'settings'
Et voici mon rake routes
Jans-MacBook-Pro-2:tp3 jan$ rake routes
settings_index GET /settings/index(.:format) settings#index
home_index GET /home(.:format) home#index
POST /home(.:format) home#create
new_home GET /home/new(.:format) home#new
edit_home GET /home/:id/edit(.:format) home#edit
home GET /home/:id(.:format) home#show
PUT /home/:id(.:format) home#update
DELETE /home/:id(.:format) home#destroy
find_index GET /find(.:format) find#index
POST /find(.:format) find#create
new_find GET /find/new(.:format) find#new
edit_find GET /find/:id/edit(.:format) find#edit
find GET /find/:id(.:format) find#show
PUT /find/:id(.:format) find#update
DELETE /find/:id(.:format) find#destroy
promote_index GET /promote(.:format) promote#index
POST /promote(.:format) promote#create
new_promote GET /promote/new(.:format) promote#new
edit_promote GET /promote/:id/edit(.:format) promote#edit
promote GET /promote/:id(.:format) promote#show
PUT /promote/:id(.:format) promote#update
DELETE /promote/:id(.:format) promote#destroy
settings GET /settings(.:format) settings#index
POST /settings(.:format) settings#create
new_setting GET /settings/new(.:format) settings#new
edit_setting GET /settings/:id/edit(.:format) settings#edit
setting GET /settings/:id(.:format) settings#show
PUT /settings/:id(.:format) settings#update
DELETE /settings/:id(.:format) settings#destroy
root / home#index
/auth/:provider/callback(.:format) sessions#create
auth_failure /auth/failure(.:format) :controller#:action
logout /logout(.:format) sessions#destroy
find /find(.:format) find#index
promote /promote(.:format) promote#index
settings /settings(.:format) settings#index
EDIT : Le problème semble se poser dans Google Chrome.