1

jQuery を使用してボタンのクリック時に text_field を入力しようとしていますが、いくつか質問があります。私はこれについてここに質問を投稿しましたが、非常に複雑に思えたので、提供された答えについて確信が持てませんでした (正しいかもしれませんが、実装には運がありませんでした)...

Ruby on Rails jQuery ボタン クリック populate text_field

クリスチャンが他の質問で言及した方法またはより簡単なものでそれを行うことの確認は素晴らしいことであり、サンプルコードは大歓迎です。他の質問で述べたように、私は ROR と jQuery の両方に非常に慣れていません。

質問に関する詳細情報...

ボタンは new と edit.html.erb の両方に存在し、text_field の隣の form_for ブロックにあります (フォームを送信するための別のボタンがあります)。Ruby メソッド SecureRandom.urlsafe_base64 を使用してフィールドにデータを入力できるようにしたいと考えています。

  1. button_tag の使用は正しいですか?
  2. javascript ファイルをどこに置くべきか、私はこれについて少し読んだことがあり、edit.js.erb ファイルの作成について言及し、コントローラーも javascript に応答するようにしています。ただし、このプロセスについては少し確信が持てません。新規ページと編集ページで同様の機能が必要なため、1 つのグローバル jQuery 関数の方が適しています。
  3. jQueryを介してコントローラーからメソッドを呼び出すことが正しい方法である場合、試したときに運がなかったので、誰かがこれがどのように行われるかのサンプルコードを提供してください。js.erb ファイルから SecureRandom.urlsafe_base64 を呼び出して、ボタンがクリックされるたびにフィールドを更新することができれば理想的です。

他の質問に見られるように、私は何かが機能していましたが、今は立ち往生しており、非常に必死になっています。

ヘルプとサンプルコードに感謝します。

ありがとうございます!

4

1 に答える 1

1

jQuery が含まれていて、既に正しく動作していると仮定しています。そうは言っても、簡単にするために、この JavaScript を app/assets/javascripts/device.js に配置します。その場合、同じディレクトリ内の application.js に「//=require_tree .」が含まれていることを確認してください (これにより、作成したばかりのファイルを含むそのディレクトリ内のすべてのファイルが取り込まれます)。 application.js" をレンダリング中のレイアウトに追加します。(おそらく app/views/layouts/application.html.erb)

app/assets/javascripts/devices.js:

$(function(){
  $("#deviceIDbutton").click(function(e){
      $.get("/generate_device_id", function(data){
      $("#deviceIDfield").val(data);
    });
    e.preventDefault();
  })
})

次に、ルートを追加して、AJAX 呼び出しが呼び出すコントローラーとアクションを認識できるようにします...

app/config/routes.rb

get '/generate_device_id', :to=>"devices#generate_device_id"

次に、要求している SecureRandom メソッドを呼び出すコントローラー アクションを追加します...

app/controllers/devices_controller.rb

def generate_device_id
 render :text=>SecureRandom.urlsafe_base64
end
于 2012-04-25T14:30:32.177 に答える