Railsコントローラ、アクション、パラメータを渡してアクションを表示するようにリダイレクトしようとしました。しかし、Railsはアクションの名前を完全に無視します!
私が得たものは http:// mysite/controllername/paramId
だから私はエラーメッセージを持っています...
これが私が使ったアクションコードです:
def update
@tip = current_user.tips.find(params[:id])
@tip.attributes = params[:tip]
@tip.category_ids = params[:categories]
@tip.tag_with(params[:tags]) if params[:tags]
if @tip.save
flash[:notice] = 'Tip was successfully updated.'
redirect_to :controller=>'tips', :action => 'show', :id => @tip.permalink
else
render :action => 'edit'
end
end
なぜフレームワークと戦うのですか?
redirect_to @tip
また、:noticeオプションを使用してコードを短縮できます。
redirect_to @tip, :notice => 'Message here'
そのRESTリソースルートの場合、ルーティングは実際に正しいです。GET
リクエスト/tips/id
は実際にshow
アクションを呼び出します。ルーティングの方法が原因で、私の推測ではmap.resources
、これは正しいです。