1

アプリ内のすべてのユーザーにカスタムの共有可能なURLがあります。このURLを使用すると、ユーザーはサイトを共有し、コンバージョンのクレジットを付与できます。
私の問題は、このルートをキャッチしようとすると、すべてのUrl(共有されていないものも含む)がuser-share-urlと見なされるという問題に遭遇することです。

私はroutes.rbをどのように設定したので、これが起こっていることを理解しています

ルート.rb

match '/:in_url' => 'share_links#go'

ShareLinksController.rb

def go
  if @link = Spree::ShareLink.find_by_in_url(params[:in_url])
    session[:converter] = @link.user_id
    redirect_to root_path, :status => @link.http_status
  end
end

これをどのように設定すれば、共有可能なURLのみがコントローラーによって処理されるのでしょうか。または、@ linkがnilの場合は、通常のリクエストを続行しますか?

4

1 に答える 1

1

このルートをルートファイルの最後に配置して、問題が解決するかどうかを確認してください。

アプリがどのように設定されているかわかりませんが、ユーザーがタイプミスをするとどうなりますか?多分それを次のようなものに変更します:

def go
  if @link = Spree::ShareLink.find_by_in_url(params[:in_url])
    session[:converter] = @link.user_id
    redirect_to root_path, :status => @link.http_status
  else
    redirect_to root_path # or 404 page
  end
end
于 2013-02-13T01:22:02.387 に答える