1

1ページのWebサイトを作成したいのですが、入力テキストフィールドがあり、ユーザーが数字を入力すると、送信ボタンがRubyで書いたアルゴリズムに基づいて同じページに文字列を出力します。

"home.html.erb" ビューに関連付けられたメソッドとして "home" を持つコントローラー main_pages_controller.rb と、出力 "_goclick.html.erb" を表示するパーシャルを作成しました。ホームページhome.html.erbに次のコードを入れました:

Number: <input type="text" name="input_number">
<%= link_to "click here", {:action=>"go_convert"}, {:remote => true, :id=>"clk"} %>
<div id="allclick">
<%= render :partial => 'goclick' %>
</div>

コントローラーには go_convert というメソッドを含め、変換用の Ruby コードを埋め込みました。これらの行でメソッドを終了しました

respond_to do |format|
        format.js { render :layout=>false } 
end

このコードを使用して、同じビュー フォルダーの下に js ファイル (go_convert.js.erb) も追加しました。

$("#allclick").html("<%= escape_javascript(render(:partial => "goclick")) %>");

メソッド go_convert をルート構成ファイルへのポスト ルートとして追加しました。「ここをクリック」リンクをクリックすると、js エラーが発生します。

http://localhost:3000/main_pages/go_convert 404 (Not Found)

したがって、このルートもルートファイルに追加しました

get "main_pages/go_convert"

「ここをクリック」リンクをクリックしても、何も起こらず、出力も、ページのリロードも、JavaScript エラーも発生しません..何が間違っていますか? Rails 3.2.12 と Ruby 1.9.3 を使用しています

4

3 に答える 3

1

次のように、コントローラー アクションによって返される JavaScript スクリプトを作成する必要があります。

あなたのコントローラーアクションで

def your_action
  @result = (your algorithm output)
  respond_to do |format|
    format.js { render :action => "result" }
  end
end

ファイルresult.js.erbで

$('#allclick').empty().append('<%= escape_javascript( @result.to_s ) %>');

result.js スクリプトは ajax リクエストへの応答としてレンダリングされます!

于 2013-07-01T15:43:55.580 に答える
0

あなたのルートに基づいて、タイプミスだと思います。あなたのmain_page_controllers.rb は main_pages_controller.rbなければなりません

于 2013-07-01T15:48:22.627 に答える