Вопрос

У меня есть контроллер, у которого есть метод с именем history

class UsersController < ApplicationController

  def history
    User.return_history(params[:id])
  end

end

В моем файле rout.rb есть следующее

map.resources :users, :shallow => true do |user|
    user.resources :friends, :shallow => false
    user.resources :posts, :collection=>{:no_access => :get}
    user.resources :photos
end

Как мне попытаться Ajax вызвать метод истории users_controller.rb ? Использование link_to_remote следующим образом

link_to_remote 'History', :url=>history_user_path(@user), :update=>"history", :method=>'get'

выдает мне сообщение о том, что history_user_path () не найден. Как это может быть? edit_user_path () не показывает ошибок, и редактирование даже явно не определено в файле User.rb. Спасибо.

Это было полезно?

Решение

mapresources: пользователи создают несколько вспомогательных методов url / path, включая edit_users_path. Если вам нужны другие. Вы должны добавить его как параметр: member или: collection для map.resources.

Это позволит вам делать то, что вы хотите:

map.resources :users, :shallow => true, :member => {:history => :get} do |user|
    user.resources :friends, :shallow => false
    user.resources :posts, :collection=>{:no_access => :get}
    user.resources :photos
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top