1

私は、ユーザーがsession[:city]自分の位置を追跡するというセッション変数を更新できるようにするフォームに取り組んでいます。変数はデータベースに保存する必要はありません。これは使い捨てのようなものです。ユーザーがサイトにいる間のみ存在する必要があります。

session[:city]サイト全体のいくつかの場所で使用されているため、次のメソッドをアプリケーション コントローラーに配置しました。

class ApplicationController < ActionController::Base
  before_filter :set_city

  def set_city
    unless session[:city].present?
      session[:city] = request.location.city
    end
    if params[:city].present?
      session[:city] = params[:city]
    end
  end
end

その部分は正しく機能し、サイト全体で変数を呼び出すことができます。

私が抱えている問題は、フォームで変数を更新することです。必要な唯一のアクションは変数を更新することですが、応答しません。ここで何かが足りないことはわかっていますが、たくさんのことを試した後、少し困惑しています。これは現在の私の基本的なフォームです:

<%= form_tag do %>
  <%= text_field_tag :city, params[:city] %>
  <%= submit_tag %>
<% end %>

作業コードに編集

4

3 に答える 3

2

これは、リクエスト (ユニコーンまたはパッセンジャー) を処理するための複数のワーカー プロセスがある本番環境のような環境では機能しません。各プロセスには独自のメモリがあります。1 つのワーカー プロセスによって処理された要求中に値が変更された場合、他のプロセスは更新された値を持ちません。

この情報を保存するには、セッションを使用する必要があります。

于 2013-08-31T03:21:18.070 に答える