Extreme Rails новичок здесь.Я создал простую базу данных, состоящую из множества вопросов.Каждый вопрос имеет атрибут challengeNumber (целое число), который определяет, к какому вызову относится вопрос.
Моя цель - передать challengeNumber в качестве параметра в URL-адресе и вернуть только те вопросы, которые соответствуют этому номеру вызова.
Я попробовал этот код:
<h1>Challenge Test</h1>
<% @challenges.each do |challenge| %>
<% if challenge.challengeNumber == (params[:challengeNumber]) %>
<h3><%= challenge.questionText %></h3>
<% end %>
<% end %>
, но он ничего не возвращает при использовании http://localhost:3000/?challengeNumber=1. Однако, если я использую:
<h1>Challenge Test</h1>
<% @challenges.each do |challenge| %>
<% if challenge.challengeNumber == Integer(params[:challengeNumber]) %>
<h3><%= challenge.questionText %></h3>
<% end %>
<% end %>
, я получаюжелаемые результаты (возвращены вопросы с контрольным номером 1)
Правильно ли я делаю это?Я хочу убедиться, что я использую правильные соглашения, и я думаю, что параметр 1 будет передан как целое число, но, похоже, будет передан в виде строки.Правильно ли преобразовать это в целое число, как показано в моем рабочем коде, или я здесь совершенно неосновная?
Изменить, чтобы добавить:
Вот некоторые подробности моей фактической настройки:
Вот вызовы show.html.erb, чтобы дать вам представление о структуре:
<p id="notice"><%= notice %></p>
<p>
<b>Challengenumber:</b>
<%= @challenge.challengeNumber %>
</p>
<p>
<b>Questionnumber:</b>
<%= @challenge.questionNumber %>
</p>
<p>
<b>Questiontext:</b>
<%= @challenge.questionText %>
</p>
<p>
<b>Answertext:</b>
<%= @challenge.answerText %>
</p>
<%= link_to 'Edit', edit_challenge_path(@challenge) %> |
<%= link_to 'Back', challenges_path %>
Итак, эта БД может иметь такую запись:
challengeNumber: 1, questionNumber: 1, questionText: «Почему?», AnswerText: «Потому что» challengeNumber: 1, questionNumber: 2, questionText: «Who?», AnswerText: «Me»
challengeNumber: 2, questionNumber: 1, questionText: «Как?», AnswerText: «Хотел бы я знать»
(я понимаю, что соглашения об именах отключены для ответа Данна, исправлю, как только я решу логику)
Итакцель состоит в том, чтобы отправить challengeNumber в качестве параметра URL (http://localhost:3000/?challengeNumber=1) и вернуть ему оба вопроса, связанные с этим номером вызова
Спасибо за любую помощь!