Почему мой вид Rails 6 перестает обновляться после нажатия кнопки? - PullRequest
0 голосов
/ 16 апреля 2020

В моем приложении на Rails 6 у меня есть вид, который показывает кнопку «следовать» (создает запись при нажатии) или кнопку «отписаться» (удаляет запись при нажатии).

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

С этим можно справиться: (1) переключиться с кнопки «следовать» на кнопку «отменить подписку» при нажатии (2) переключить обратно с «отменить подписку» (повторять) при нажатии

Однако после шага 2 кнопка больше не работает, пока я не перезагружу страницу (даже если я перейду на другие страницы и вернусь на эту страницу). Как я могу получить так, чтобы переключение назад и вперед работало с перезагрузкой страницы независимо от того, сколько раз они нажали?

# the model
def follows?(account_tag_id)
  user_tag = self.followed_topics.where(account_tag_id: account_tag_id)
  if user_tag.present?
    return true
  else
    return false
  end
end


# in the view:
<% if current_account_user.follows?(@tag.id) == true %>
  <%= render 'unfollow_button', account_tag: @tag %>
<% else %>
  <%= render 'follow_button', account_tag: @tag %>
<% end %>


# follow_button partial
<%= link_to followed_topics_path(account_tag_id: account_tag.id), method: :post, remote: true do %>
  <button class="btn btn-fab btn-primary">
    Follow
  </button>
<% end %>


# unfollow_button partial
<%= link_to current_account_user.followed_topics.find_by_account_tag_id(account_tag.id), method: :delete, remote: true do %>
  <button class="btn btn-fab btn-primary">
    Unfollow
  </button>
<% end %>


# In the controller:
# POST /followed_topics
def create
  @followed_topic = current_account_user.followed_topics.create!(:account_tag_id => params[:account_tag_id])
  respond_to do |format|
    format.html { redirect_back(fallback_location: root_path) } #, notice: "Follow successful" }
  end
end


# DELETE /followed_topics/1
def destroy
  @followed_topic = current_account_user.followed_topics.find(params[:id])
  @followed_topic.destroy       
  respond_to do |format|
    format.html { redirect_back(fallback_location: root_path) }#, notice: "Unfollow successful"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...