1

レール内で呼ばれるルビー関数を作りたいです。私はこの質問に従いましたが、にリダイレクトされます

http://localhost:3000/my_func?arg=arg

欲しくない。ボタンがクリックされたときにのみ機能を実行したいのですが、同じページにとどまります!

編集:

私はコードを変更しましたが、これを解決するためだけにスクラッチサイトを作成しました。私がしたのは:

rails new eraseme
cd eraseme
rails g controller public home

app / controllers / public / home.html.erb

class PublicController < ApplicationController
  def home
  end

  def my_func

  end
end

app / views / public / home.html.erb

<%= button_to "Button", {:action => "my_func", :arg => "arg"} %>

私がやりたいのはmy_func、ボタンをクリックしたときに実行することです。しかし、クリックすると、

No route matches {:action=>"my_func", :arg=>"arg", :controller=>"public"}
4

1 に答える 1

1

だから、私が言えることから。完了時に HTML ファイルを返さない関数を呼び出すために、コントローラーに AJAX/HTTP 要求を送信するボタンを作成したいと思います。

これを行うには、次のことを行う必要があります。

1.) この呼び出しの HTTP ルーティングを設定します。これは config/routes.rb ファイル内にあります。

match '/public/my_func' => 'public#my_func'

これにより、アプリケーションは次の URL を使用して HTTP リクエストを送信し、コントローラー内でメソッドを呼び出すことができます。:action => "my_func" パラメーターにより、button_to メソッドはその URL でこの呼び出しを送信します。

2.) :remote => true, :form => { "data-type" => "json" } も追加のパラメータとして button_to メソッドに含めます。

これにより、ボタンが従来の HTTP リクエストから AJAX リクエスト経由の HTTP リクエストに変換されます。

これがどのように機能するか教えてください。この場合、AJAX を使用する代わりの方法があると思います。非常に単純な方法であれば、おそらく erb としてビュー内に含めることができます。

于 2012-10-28T22:11:35.547 に答える