2016-06-01 4 views
1

私はRuby on Railsの新人です。私は非常に単純なアプリケーションを作成したいと思います。足場を使ってユーザーと呼ばれるデータベースを作成しました。ユーザーの2つのフィールドは、limitcontainersです。これは、ユーザーが持つことができるコンテナの最大数と、残りのコンテナの合計数です。それらはどちらも指定された数(例えば15)で始まりますが、ユーザーが1つを取るときにはcontainersは14になり、1つを取るごとに0になるまで減少し続けます。ユーザーがコンテナを返すとき、 containerは、私の例では最大数15まで1つ増えます。Ruby on Railsでリンクを作成して特定のデータベースエントリを更新する

私はこれをRubyスキャフォールディングを使って作成しているので、今は各ユーザーの編集ページに行き、手動でcontainersの値を変更することができます。 users/:idページでは、私は今

<%= link_to 'Edit', edit_user_path(@user) %> 

と同様のものを持っていますが、今のところ

<%= link_to 'Take container', #run method to decrease and return here# %> 
<%= link_to 'Return container', #run method to increase and return here# %> 

の線に沿って、私は気にすべてがあることを編集リンクのようなリンクを持つようにしたいです番号を変更するだけで、私はユーザー情報をレンダリングします。

答えて

1

AJAXはここで良いフィットするだろうが、それが問題を複雑にするので、私はRailsのでそれをやってに固執します。

最初のようなもの含めるように、あなたのroutes.rbをファイルを編集する必要があります。その後、あなたのユーザーのコントローラのメソッドを追加し

get '/remove_container/:user_id', to: 'users#remove_container', :as => :remove_container 
get '/add_container/:user_id', to: 'users#add_container', :as => :add_container 

を:

def remove_container 
    user_id = params[:user_id] 
    @user = User.find user_id 
    # code to change container number 
    redirect_to edit_user_path(@user) 
end 
def add_container 
    user_id = params[:user_id] 
    @user = User.find user_id 
    # code to change container number 
    redirect_to edit_user_path(@user) 
end 

作ることがたくさんありますこれはより良いですが、これはあなたに正しい方向に行くと思います。これらの

リンクは手動で行うかの経路で行うことができます。

<a href="/remove_container/[:user_id]">Remove Container</a> 

または

link_to "Remove Container", remove_container_path(@user) 
+0

それは、これらのメソッドを呼び出すように私は、適切なリンクを作成するにはどうすればよいですか? –

+0

のlink_to(ボディ、URL、html_options = {})私は答え – tam5

+0

@ZacharyWeixelbaum、あなたのlink_toパスは完全に働きました – Kevin

関連する問題