我有一个 link_to 在单击时切换一个布尔字段。问题是它会在页面刷新和/或加载时切换。这是代码:
故事/show.html.erb
<div id="story">
<%= render @story %>
</div>
_story.html.erb
<div id="storyShow">
<% if story.user == current_user %>
<%= render 'stories/published', { :story => story } %>
<% end %>
</div>
故事控制器.rb
def toggle_published
@story = Story.find(params[:id])
@story.toggle!(:published)
end
application_helper.rb
def published_link_text(publishable)
publishable.published? ? 'Published' : 'Un-Published'
end
_published.html.erb
<% if story.published? %>
<span id="publishedSwitchGreen" class="greenText">
<%= link_to published_link_text(story),
toggle_published_story_path(story), :remote => true, :id => "story_publish#{story.id}" %>
</span>
<% else %>
<span id="publishedSwitchRed" class="redText">
<%= link_to published_link_text(story),
toggle_published_story_path(story), :remote => true, :id => "story_publish#{story.id}" %>
</span>
<% end %>
toggle_published.js.erb
$("#story_publish<%= @story.id %>").text("<%= published_link_text(@story) %>");
路线.rb
resources :stories do
get 'toggle_published', :on => :member
end