2014-09-23 2 views
0

Я получаю эту ошибку:неопределенный метод `stringify_keys' для "/ сообщений/7/до-голосования": Строка

NoMethodError - undefined method `stringify_keys' for "/posts/7/up-vote":String: 

Это мой код:

<% if policy(Vote.new).create? %> 
    <div class="vote-arrows pull-left"> 
    <div if vote = current_user.vote(post) %> 
     <%= link_to [post, Vote.new], post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %> 
      <i class = "glyphicon glyphicon-chevron-up #{(current_user.voted(post) && current_user.voted(post).up_vote?) ? 'voted' : '' }" ></i>&nbsp; Upvote 
      <strong><%= post.points %></strong> 
     <% end %> 

    <% else %> 
     <%= link_to [post, vote], post_down_vote_path(post), class: 'btn btn-danger', method: :down_vote do %> <i class = "glyphicon glyphicon-chevron-down #{(current_user.voted(post) && current_user.voted(post).down_vote?) ? 'voted' : '' }"></i>;nbsp; Downvote 
    <% end %> 
     </div> 
<% end %> 

я набираюсь ошибка в этой строке:

<%= link_to [post, Vote.new], post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %> 
      <i class = "glyphicon glyphicon-chevron-up #{(current_user.voted(post) && current_user.voted(post).up_vote?) ? 'voted' : '' }" ></i>&nbsp; Upvote 

Любая помощь будет высоко оценен ...

+1

Hm, 'link_to' должен принимать ярлык в качестве своего первого параметра, нет? Почему массив там? –

+2

неправильный 'метод' в' link_to'' метод:: up_vote' или 'method:: down_vote'. Может быть только один метод: «GET, PUT, POST, DELETE, PATCH, OPTIONS, HEAD ....» –

+0

Да, это тоже. Но это не главная проблема. –

ответ

0

Формат link_to вызова:

link_to "The text in the link", the_path, hash_of_options 

То, что первый аргумент должен быть текст, что Серхио означает «link_to должен принять метку в качестве первого параметра». Так, что-то вроде:

<%= link_to "Up-vote the post" , post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %> 

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

Заканчивать документацию для метода: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Обратите внимание, что ваша ссылка содержит иконку, которая, вероятно, следует занять место на «ярлык», так что ваша метка может быть просто пустая строка.

+0

Пожалуйста, не используйте форматирование цитаты для того, что не является цитатой. –

+0

Прошу прощения, Серхио. Я цитировал память. Не означает, что вы неверно процитировали вас. – Sasha

3

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

<!-- Mixing HTML and Ruby on this line --> 
    <div if vote = current_user.vote(post) %> 

В link_to ссылки нужна любовь. Внимательно прочитайте документацию и обратите внимание, в частности:

  • Допустимые значения HTTP глагольные для :method
  • Путь должен только быть указан один раз

link_to документы здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

Вы можете потратить некоторое время на получение отступа вправо для if/else/ends, так как это облегчит вам выявление синтаксических ошибок.

Смежные вопросы