2
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :remote => true, :method => :post %>

指定されたリンクでsearch_nameテキストフィールドの値を渡す方法はありますか?

4

2 に答える 2

5

サーバーに値を投稿しようとしている場合は、HTMLフォームを使用する必要があります。それが彼らが設計されたものです。実際、ヘルパー:method => :postのオプションとしてを指定するとlink_to、Railsは動的にHTMLフォームを作成し、リンクがクリックされるとすぐに送信されます。なぜこれをしないのですか?

<%= form_tag '/save_search' do -%>
  <%= text_field_tag 'search_name', :class => 'search_save' %>

  <%= submit_tag 'Save search' %>
<% end -%>

これにより、必要に応じて値がサーバーに送信されます(params[:search_name]コントローラーアクション内でアクセス可能)。

美学の問題である場合(たとえば、ボタンが醜く、代わりにリンクが必要だと思う場合)、いつでも送信ボタンをプレーンな古いCSSのリンクのようにスタイル設定できます。ユーザーにはリンクのように見えますが、さらに重要なことに、ボタンのように動作し、追加のロジックなしでフォームを送信します。

フォームを使用することが道であるとまだ確信しておらず、フォームを機能させることに熱心な場合は、jQueryを使用してそれを行うことができます。サンプルコードを少し変更してみましょう

<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :id => 'save_search' %>

次に、application.jsあなたの中に以下を追加することができます。

$(function() {
    // Add click event binding to `Save search` link
    $("#save_search").on("click", function(event) {
        event.preventDefault(); // don't trigger default

        // get the value inside the text field
        var name = $("#search_name").val();

        $.post('/save_search', { search_name: name }, function(data) {
            // log the result from the server, or whatever...
            console.log(data);
        });
    });
});

このイベントは、誰かが[検索の保存]リンクをクリックしたときに発生し、指定されたデータを使用してサーバーにAJAX呼び出しを行います(ユーザーがJavaScriptを無効にするなどの愚かなことをした場合を除く)。コントローラアクションは、を介してこのデータにアクセスできますparams[:search_name]。お役に立てれば。ハッピーコーディング!

于 2012-06-14T04:12:13.177 に答える
1

これは、RubyonRailsと重複している可能性があります-text_fieldの値をフォームで別のコントローラーのアクションのパラメーターに渡します

しかし、ここに答えがあります:http: //railspikes.com/2007/4/17/partial_dom_submit_with_link_to_remote

新しいバージョンのレール用に変更する必要がある場合があります。オプションはもう:submitないようです。リンクがGETアクションに移動する場合は、javascriptchangeイベントを使用してリンク上のを変更できますhrefPOSTアクションでもこれを行う方法があると確信しています。

そして私はそれを機能させるためにこのページを使用しました:https ://makandracards.com/makandra/1383-rails-3-make-link_to-remote-true-replace-html-elements-with-jquery

于 2013-05-16T03:08:03.137 に答える