0

私はレールに不慣れで、まだrailstutorialを介してロープを学んでいますが、本はフォームの送信(http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html)を介してデータベースにすべての変更を加えます. しかし、これなしで送信(データベースの更新)を行うにはどうすればよいでしょうか。ページで計算されたスコアを追加したいとしましょう(たとえば、jsカウンターを介して-簡単にするために、定数10とだけ言いましょう)と私のデータベーススコアと呼ばれる列で構成されます。次に、送信ボタンを押した後、どのようにデータベースを更新しますか?

ありがとう

4

2 に答える 2

0

実際、それは非常に簡単です。

  1. 定数10はビューから送信されます。送信は、この要求を処理するコントローラーアクションを指す必要があります。したがって、送信ボタンは、、、パラメータを使用してURLを作成する必要が:controllerあります:action:idフォームでは、これはform_for宣言で処理されます。あなたはbutton_tag宣言で扱います。

  2. このメッセージがコントローラー/アクションに到達できるようにルートを構成する必要があります。

  3. 定数10はparamsハッシュで転送されます。フィールドがmy_counterの場合は、を探しますparams[:my_counter]。フォームがモデル用であった場合、たとえばツイートの場合は、にある可能性がありますparams[:tweet][:my_counter]

  4. コントローラのアクション(場合によっては更新)では、最初にレコードをフェッチして、のようなものに変更します@score = Score.find(:params[:id])。これparams[:id]も送信のビューから来ています。ここでカウンターを変更して保存します。

    def update
      @score = Score.find(:params[:id])
      @score.counter = params[:my_counter]
      @score.save
      redirect_to :action => :index  # or wherever
    end
    

幸運を。

于 2012-06-06T00:29:54.283 に答える
0

2つの簡単な方法:

  • フォームを使用する
  • リンク付きのURLパラメータを使用する

Rails側の処理(GET v。POST以外)は同じです。これは単なるパラメーターです。

JavaScriptを使用している場合は、フォームの入力要素を更新して通常どおりに送信できるため、フォームを使用しない理由は必ずしもありません。

于 2012-06-06T00:22:14.140 に答える