2013-12-02 4 views
1

Я новичок в Rails и пытаюсь создать страницу, которая в значительной степени является копией моей страницы # show, с немного отличающимся контентом и форматированием. В идеале, это будет работать что-то вроде этого:Ошибка маршрута Rails: NoMethodError

Нормальный маршрут: http://myUrl.com/users/2 Новый маршрут: http://myUrl.com/users/2/lightbox < -за это новый маршрут с форматированием. Он должен иметь доступ к информации пользователя №2.

Я сделал некоторые исследования на переполнение стека, и добавил следующее routes.rb

resources :users do 
     member do 
     get 'lightbox' 
     end 
    end 

, а затем сгребают маршруты. Это позволяет мне ввести URL-адрес http://myUrl.com/users/2/lightbox. Однако, похоже, он не имеет доступа к каким-либо ресурсам пользовательского класса и, похоже, не знает, кто такой Пользователь №2.

Я, возможно, полностью об этом поступил неправильно - все, что я действительно хочу сделать, это создать пользовательскую страницу для отображения информации отдельного пользователя, которая отличается от страницы показа. Я бы очень признателен за любую помощь!

ответ

1

Вы должны добавить действие к вашему app/controllers/users_controller.rb:

def lightbox 
    @user = User.find(params[:id] 
    # any other logic, look at your show method 
    end 

маршрутизации отображает только URL к действию контроллера. Каждое действие контроллера, каждое индивидуально, задает переменные и отображает представление.

Перед использованием фильтров и вспомогательных методов убедитесь, что вам не нужно писать код несколько раз. Например:

before_filter :find_user, only: [ :show, :lightbox ] 

def show 
end 

def lightbox 
end 

protected 

def find_user 
    @user = User.find(params.fetch :id) 
end 
+0

Это работает. Спасибо!! – USK

Смежные вопросы