Показать данные модели в зависимости от того, какая ссылка нажата - PullRequest
0 голосов
/ 15 января 2012

Я относительно новичок в рельсах и использую рельсы. 3. Я пытаюсь создать онлайн-глоссарий, чтобы, если пользователь нажимает «А» в меню, ему отображались записи из этой базы данных, которые начинаются с «А».

Я знаю, что вы можете сделать это, используя разные страницы, так что у вас может быть файл 'letter_A.html.erb', файл 'letter_B.html.erb' и т. Д., Но мне интересно, можно ли это сделатьв том же файле, так как я хочу, чтобы избежать повторения одного и того же кода снова и снова?

Что бы мне хотелось, чтобы пользователь нажимал на ссылку «D», он мог перейти на другую страницу «letter.html.erb», но видеть только записи, начинающиеся с «D».И если они нажимают «А», они снова попадают на ту же страницу, но видят только записи, начинающиеся с «А».Я думаю, что вы должны передать переменную в функцию link_to, но я не уверен, как это сделать.

Любая помощь будет принята с благодарностью.

Заранее спасибо.

Я создал метод внутри моего контроллера сообщений следующим образом:

def showletter
@posts = Post.where(:letter => "B")
...
end

и это показывает все записи, которые начинаются с буквы B, например.Но мне интересно, можете ли вы передать переменную в свой контроллер, чтобы заменить букву «B» на переменную, которая будет между A..Z?Исходя из этого, я надеялся использовать link_to_function или что-то похожее на мой взгляд и вызывать один и тот же метод для разных ссылок?Я все еще новичок в рельсах, поэтому я не уверен, что это можно сделать - любая помощь, которую кто-либо может предложить, будет великолепна.

1 Ответ

1 голос
/ 15 января 2012

Предположим, у вас есть такой маршрут:

get '/glossary/:id', :as => :glossary

Теперь на вашей индексной странице будет код, похожий на:

<% ('a'..'z').to_a.each do |f| %->
  <%= link_to "#{f}", "/glossary/#{f}" %>
<% end %>

или

<% ('a'..'z').to_a.each do |f| %->
  <%= link_to "#{f}", glossary_path(:id => f) %>
<% end %>

Второе предпочтительнее. Подробнее здесь . Помните, что вы можете поэкспериментировать со своими именованными маршрутами в консоли rails, например:

$ rails console --sandbox

Loading development environment in sandbox (Rails 3.1.3)
Any modifications you make will be rolled back on exit
ruby-1.9.3-p0 :001 > app.glossary_path(:id => 'a')
 => "/glossary/a"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...