为我的rails应用添加了管理员视图(这:http://www.interque.co/)。添加了一个布尔状态,用于批准每个问题。我试图通过点击我已标记为已批准的链接来切换该状态。
这是我的控制器:
class AdminController < ApplicationController
def index
@questions = Question.all
unless current_user && current_user.administrator?
redirect_to root_path
end
end
end
这是我正在使用的管理员视图,其中列出了所有未经批准的问题:
<% if current_user %>
<% @questions.each do |question| %>
<% if question.approved == false %>
<div>
Title: <%= question.title %><br>
Description: <%= question.description %><br>
<%= link_to "Approve", question_path(question), :method => :put %>
</div>
<br>
<% end %>
<% end %>
<% end %>
我可以通过点击link_to来切换状态吗?我只需要设置question.approved = true。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
将remote:true添加到您的链接并添加一个设置布尔状态的控制器操作。您可能希望检查链接是否已更改为“已批准”#39;之后(包括在答案中)。另一件好事是在出现错误时显示错误消息并在请求期间禁用链接。
配置/ routes.rb中
resources :questions do
member do
put :approve
end
end
视图/管理/ index.html.erb
<span class="approve-question">
<%= link_to "Approve", approve_question_path(question), :method => :put, remote: true %>
</span>
视图/问题/ approve.js.erb
$('.approve-question').html('Approved');
控制器/ questions_controller.rb
respond_to :js
def approve
@question = Question.find(params[:id])
if @question.update(approved: true)
render
else
render @question
end
end