0

ユーザーがアクティブな管理者でイベントを作成するときに定義される列名:ドメインの新しいURLを生成する必要があるイベントWebサイトがあります。つまり、http://www.re-work.co/:domains

イベントモーダルとevents_controllerがあり、ビューはevents#showです

私のルートファイルには

match '/:domains' => "events#show"
  resources :events

私のコントローラーには問題のように見えるこれがありますが、何に変更すればよいかわかりません:

class EventsController < ApplicationController
def show
  @event = Event.where(:domains => request.base_url).first

  if @event.nil?
    @event = Event.first
  end
end

他のすべてのルートは admin と関係があるため、rake ルートのスニペット

$ rake routes

         root            /                                         events#show
       events GET        /events(.:format)                         events#index
              POST       /events(.:format)                         events#create
    new_event GET        /events/new(.:format)                     events#new
   edit_event GET        /events/:id/edit(.:format)                events#edit
        event GET        /events/:id(.:format)                     events#show
              PUT        /events/:id(.:format)                     events#update
              DELETE     /events/:id(.:format)                     events#destroy

これらのすべての URL '/events/technology' または '/events/cities' または '/cities' または '/technology' は同じページに移動します。それを出します。誰か助けてくれませんか?

4

1 に答える 1

1

これは、次の行が原因です。

match '/:domains' => "events#show"

events#show「/」以降のすべてに一致し、アクションを指しています。次の理由から、その行は必要ありません (削除できます)。

  resources :events

イベント コントローラーのすべてのデフォルト ルートを生成します。

編集:

あなたがやろうとしているのは、アクション/:domains内で使用されるものとして渡されたものをキャプチャすることです。show次に、そのパラメーターはparamsハッシュの一部として移動します。たとえば、次のようになります。

Parameters: {"domains"=>"technology"}

このようにアクセスできますparams[:domains]。その場合、最初の行をそのままにしておくことができます。

match '/:domains' => "events#show"
match '/events/:domains' => "events#show" # add this one

resources :events   # <- delete this one, this right now is kind of redundant for what you're trying to do

次のコードを変更します。

  @event = Event.where(:domains => params[:domains] ).first
于 2013-04-20T20:06:04.743 に答える