0

モデルset_scoreに、というメソッドがあります。Client

私のClients#index見解では、「スコアの更新」というボタン/リンクを作成したいと思います。これは、必要なパラメーターをそのメソッドに送信して実行するだけです。

それ、どうやったら出来るの?

Railsリンクヘルパーでそれを行うことはできますか?

編集1:

その価値については、現在、そのメソッドはcallback(ie before_save)によって実行されます。ただし、ユーザーが手動でトリガーできるようにしたいと思います。

4

2 に答える 2

0

モデルのメソッドを呼び出すコントローラーにアクションを追加してから、リクエストがそのアクションに到達できるようにするルートを追加します。リンクにそのルートを呼び出させます。

ブラウザはモデルと直接通信できません。それがコントローラーの目的です。

于 2012-11-28T22:36:14.780 に答える
0

@meagarが指摘したように、これを行う方法は、コントローラーでカスタムアクションを作成し、次にルートを作成してlink_toから、ビューでその名前付きルートを使用することです。

Client#Controllerは今この方法を持っています:

def update_score
    @client = current_user.clients.find(params[:id])
    @client.set_score

respond_to do |format|
  if @client.update_attributes(params[:client])
    format.html { redirect_to clients_url, notice: 'Score was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @client.errors, status: :unprocessable_entity }
    end
  end
end

routes.rbは今このルートを持っています:

match ':controller/update_score/:id' => 'clients#update_score', :as => :update_score

そして私の見解では、私はこのリンクを使用しました。ここで、clientはブロックによって生成されたローカル変数です。

<%= link_to 'Update Score', update_score_path(client) %>
于 2012-11-28T23:58:51.170 に答える