1

注文の入力フォームを作成し、次のように選択clientします。

<div class="field">  
  <%= f.label :client_short, "Client Code Short" %><br />
  <%= f.collection_select(:client_short, Client.order(:shortname), :shortname, :shortname)%>
</div>

のもう 1 つの列はClientfullnameです。ここで、注文入力時の検証のために、ショートネームに基づいてフルネームの値を取得して編集不可のテキストフィールドに表示したいと考えています。

始めるべきかどうかわからないので、誰かが例を教えてくれませんか?

4

1 に答える 1

0

javascriptこの種のタスクに使用します。を使用せずに、 purejQueryとを使用して例を作成します。(以前の、名前を変更するだけです)を開き、リストにイベントを追加して、別のフィールドにフルネームを表示します。 javascriptcoffescriptclient.jsclient.js.coffeechange

$(function() {
  $('#list_id').change(function() {
    var client_id = $(this).val();
    $.get('/clients/get_fullname', client_id, function() { });
  });
});

get_fullnameここで、に応答するコントローラー名に対してアクションを作成する必要がありますjavascript。多分このようなもの:

def get_fullname
  @full_name = Client.find(params[:client_id]).fullname
  respond_to |format|
    format.js
  end
end

get_fullname.js.erb次に、編集不可能なフィールドに名前を表示するファイルを/viewsフォルダー に作成します。

$('#uneditable_field_id').val("<%= @item %>")

いくつかのマイナーなタイプミスと構文エラーをチェックするだけで、準備は完了です。
これは、このようなことを行うための多くの方法の1つにすぎないことを忘れないでください。

于 2012-12-14T13:34:15.123 に答える