Я пытаюсь сделать общее количество голосов редактируемым с помощью анализируемого API JSon. В моем контроллере реестров есть следующее:
def index
@rosters = HTTParty.get('https:api', :headers =>{'Content_Type' => 'application/json'})
@allrosters = Roster.all
@allrostershash = {}
@allrosters.each do |roster|
image_url = roster['image_url']
@allrostershash[ image_url ] = roster
end
@rosters.each do |roster|
img_url = roster['image_url']
unless @allrostershash[img_url]
Roster.create(roster)
end
end
end
def count_vote
roster_id = params[:id]
roster = Roster.find_by(roster_id)
newvote = roster.vote + 1
if roster.update({vote: newvote})
redirect_to rosters_path
end
end
Ростер - это название моего класса выше. В моих представлениях рельсов у меня есть следующее:
<% @rosters.each do |roster| %>
<div class='each'>
<%= image_tag(roster['image_url'], class: 'image') %>
<%= hidden_field_tag(roster['id']) %>
<p class='name'> <%= roster['name'] %> </p>
<p class='title'> <%= roster['title'] %> </p>
<p> <%= roster['bio'] %> </p>
<p> <b> Want to work with <%= roster['name'] %>? </b> <%= link_to image_tag('yes.jpg', class: 'yes'), rosters_path, method: :patch %>
<br>
<%= roster['vote'] %> People have said Yes! </p>
<br>
</div>
<% end %>
Мне бы хотелось, чтобы каждый раз, когда кто-то нажимал на yes.jpg, список ['voice'] увеличивается на 1.
В настоящее время мои маршруты настроены следующим образом:
get 'rosters', to: 'rosters#index'
patch 'rosters', to: 'rosters#count_vote'
Я пытаюсь выполнить это без jquery или ajax, поэтому у меня есть часть if roster.update для перенаправления в rosters_path, поэтому она в основном обновляет страницу при нажатии. Однако сейчас он не обновляет общее количество голосов, я не уверен, что мне не хватает. Я хотел бы сделать все это на одной странице, поэтому, если это невозможно без JQuery, любые указания в правильном направлении приветствуются.