Настройте маршруты. Rb для вызова метода в контроллере - PullRequest
0 голосов
/ 10 июля 2010

У меня есть онлайн-портфолио, созданное в Rails с различными проектами. Я хочу иметь возможность фильтровать проекты по ключевым словам. Мой подход заключается в том, чтобы определить метод для каждого ключевого слова в ProjectsController и связать ключевые слова для вызова методов.

Например, ключевое слово = graphic_design:

<%= link_to 'Graphic Design',  :action => "filter_"+@project.keyword.to_s %>

Таким образом я получаю ошибку:

Couldn't find Project with ID=filter_graphic_design

Это совершенно очевидно для меня. Мой вопрос: есть ли способ указать, что маршруты. Rb ведут себя по-разному только для методов filter_? Любые другие предложения?

Ответы [ 2 ]

1 голос
/ 10 июля 2010

Ваш подход неверен. Зачем вам нужен метод filter_ для каждого ключевого слова? Это довольно простое решение. Сначала определите именованный маршрут в вашем rout.rb:

map.filter '/projects/:filter_this_for_me', :controller => 'projects', :action => 'filter'

По вашему мнению,

<%= link_to 'Graphic Design',  filter_path("filter_" + @project.keyword.to_s) %>

В вашем действии фильтра

def filter
  logger.info("Parameters that is being received: #{params}")
  filter_what = params[:filter_this_for_me]

  if(!filter_what.nil? && !filter_what.blank?)
        # Here filter_what will have "filter_graphic_design" or "filter_something"
        # With which you can filter any data that you want.
        # Filter your projects here.
  end
end
1 голос
/ 10 июля 2010

Я думаю, что-то подобное может работать

map.connect "/projects/filter_{filter}", :controller => 'projects', :action => 'filter'

Не пробовал, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...