Я изучаю ROR и работаю над приложением стиля голосования, у меня есть четыре стола, и я использую Пользователи , Вопросы , Параметры и Ответы , и я могу писать в таблицу Ответы через MySQL, и пока отображается общее количество голосов, что отлично.

У меня проблема с работой кнопки +1 (в конечном итоге она будет уникальной для каждого пользователя, но пока я просто хочу увидеть, как она работает).

Я почти уверен, что все мои файлы настроены правильно, но я не понимаю, что добавить в представление «Показать» для кнопки, это может быть проблема с маршрутами, поскольку он говорит undefined method 'upvote_option_path' - любая помощь буду очень признателен! Если я забыл какие-либо файлы ниже, дайте мне знать :-)

Просмотр вопроса:

<% @question.options.each_with_index do |option, index| %>
   <p><%= option.option_text %></p>
   <p><%= pluralize(option.answers.count, "vote") %><br><br></p>
   <p><%= button_to '+1', upvote_option_path(option), method: :post %></p>
<% end %>

Голос контроллера Option:

def upvote
    @question = Question.find(params[:question_id])
    @option = Option.find(params[:option_id])
    Answer.create(user_id: current_user.id, question_id: @question, option_id: @option)
end

Файл маршрутов:

resources :questions do
    resources :options do
        post 'upvote'
    end
end

Рейк-маршруты:

question_option_upvote  POST  /questions/:question_id/options/:option_id/upvote(.:format)  options#upvote
0
classequalsarthur 20 Апр 2016 в 20:04

2 ответа

Лучший ответ

неопределенный метод upvote_option_path

По вашим маршрутам нет upvote_option_path, должно быть question_option_upvote_path. Также путь принимает два аргумента как keys (:question_id & amp; :option_id), поэтому вам необходимо передать эти два в путь. Ниже должно работать

<%= button_to '+1', question_option_upvote_path(@question, option), method: :post %></p>
1
Pavan 20 Апр 2016 в 17:14

В рейк-маршрутах у вас есть это: question_option_upvote, на ваш взгляд, это: upvote_option_path. Совершенно уверен, что ваше мнение должно сказать question_option_upvote_path(option).

0
Brad 20 Апр 2016 в 17:09