0

Ruby on Rails アプリケーションで、ユーザーのユーザー名を入力テキスト ボックスに入力し、[追加] ボタンを押すと、ユーザー名が詳細とともに下に表示されるようにしたいと考えています。次に、別のボタンを使用したい場合は、それらをリストから簡単に削除できます。

Javascript と Rails データベースを接続して、特にこれらのボタンでそのようなタスクを完了するにはどうすればよいでしょうか? Javascript は私の得意分野ではありませんが、Javascript を使用して Rails データベースを抽出および変更する方法にはさらに困惑しています。参考までに、MongoDB も使用しています。

これにアプローチする最良の方法は何ですか?

ポピュラー::ユーザー UI の追加/削除

サーバーエンドポイント「admin/popular/users.json」に「POST」するために使用しているjQueryおよびAJAXコードを次に示しますが、Railsを使用してデータベースに新しいユーザーを作成する方法がわかりませんポピュラー::ユーザーモデル。

$(document).ready(function() {
    $('.add-to-popular-users-button').click(function(event){
        event.preventDefault();
        var addToPopularUsersBtn = $(this);
        var userToBeAdded = $('input[name=popular_user]').val();
        var data = { 'popular_user': {'username': userToBeAdded, 'category': 'popular'} };
        var url = "/admin/popular/users.json";
        $.ajax({
            url: url,
            data: data,
            dataType: 'json',
            type: 'POST',
            success: function(e) {
                alert('Great success!');
            }

        });
    });
});

ここに私の Popular::User モデルがあります:

class Popular::User
  include Mongoid::Document
  include Mongoid::Timestamps

  POPULAR = 'popular'

  field :category, default: POPULAR
  index :user_id

  belongs_to :user

  validates_presence_of :user_id
  validates_uniqueness_of :user_id

  def self.popular
      user_ids = self.where( :category => POPULAR ).map(&:id)

      User.where(:_id.in => user_ids)
  end
4

2 に答える 2

1

私は Rails フレームワークに詳しくありませんが、ajax を使用してそれを行うことができます。ユーザーを作成し、テーブル行を作成(またはテーブルを再作成)し、テーブル内のhtmlの場所を返すコントローラーメソッドにajaxポストリクエストを送信できます。

簡単な例は次のとおりです。

$.ajax({
 type:'post',
 data:{} //user data,
 dataType: 'json', //or any other
 url: 'page_or_method',  //page or method that will return html
 success: function (data) {
     $('div#userTable').html(data); //in case data contains the table
 }
});

$.ajax メソッド (jQuery) について読むか、jQuery を使用したくない場合は XMLHttpRequest を使用できます。

于 2013-04-30T20:58:55.507 に答える
0

そのため、少しテストしてこれを理解することができました。ただし、基本的には、AJAX/jQuery または Rails 固有の RESTful アーキテクチャ (つまり、:delete を呼び出して特定の UI ボタン​​に関連付けるなどの HTTP 動詞) を使用してこれを行うことができます。

AJAX で認識すべき重要なアイデアの 1 つは、'POST' または 'DELETE' 動詞を使用して適切なサーバー エンドポイントに送信したデータが何であれ、適切なコントローラー アクションによって取得されるということです。つまり、何かを作成するために「POST」経由で「/popular/users.json」エンドポイントにデータを送信している場合、def createメソッドは後でデータを操作できるようになります。次に、コントローラー アクションの ivar にデータを割り当てて、コントローラー アクションに対応する UI ビューで解釈および操作できます。

于 2013-07-04T16:58:50.797 に答える