2011-12-31 6 views
0

私はレール3のアプリケーションを持っていますが、コントローラのメソッドをアクティブにするためにボタンを使用しようとしています。私users_controller.rbに私はbutton_toを使用してコントローラのメソッドをアクティブにする方法

def follow 
    ... 
    ... 
end 

を持っているし、ビュー(ユーザー/ show.html.erb)で、私はボタンがそのメソッドを呼び出したいことを意味しています。 私は現在<%= button_to("Un-Follow", :controller=>"users", :action=> "follow") %>を持っていますが、ボタンをクリックすると、次のエラーが表示されます:No route matches [POST] "https://stackoverflow.com/users/5/follow"なぜでしょうか?

これを修正する方法がわかりません。

EDIT:config/routes.rbを修正し、そのエラーを修正しました。しかし、私はまだコントローラ上でエラーが発生しています。 nil id。

編集:私はすべての作業エラーを無料で得ることができました。ボタンをクリックすると、ビューが関連付けられていないと表示されます。しかし、私はそのメソッドを呼び出すだけで、私は新しい見方を望んでいません。コントローラーではなく、ヘルパーで行うのが最善でしょうか?

EDIT:最後に、何らかの理由で、「follow」ボタンをクリックするとすべてが機能します。しかし、私は "unfollow"ボタンをクリックしても動作しません。

+1

私たちにもっとコードを教えてください。また、回答を編集し、すでに修正したエラーの説明を削除します。 –

+0

正しい解決策が必要なのか、エラーメッセージを消してほしいだけですか?この実装は、あなたが思うよりはるかに離れています。 – drhenner

+1

@Planetpluto:あなたが気にしないなら、私はこの質問を引き継いで、私の答え(あなたが受け入れた)に合うように編集します:-) –

答えて

2

コントローラーアクションのビューは必ずしも必要ではありません。あなたは任意のテキストをレンダリングすることができます。

def follow 
    ... 
    render :text => 'ok', :layout => false 
end 

ビューをレンダリングする代わりに、別のページにリダイレクトすることができます。

def follow 
    ... 
    redirect_to :action => :index 
end 
+3

私は誰かに、エラーメッセージ – drhenner

関連する問題