我有一个索引页,并且在每一行上都放置了button_to。该按钮的任务是将行中的“用户名”内容发送到另一个表。我希望按钮在执行此操作后被隐藏,希望它从表中删除后再次可见。
我已经完成了发送数据的过程,但是我无法隐藏按钮。
#rad_accts_controller
def create
@rad_acct = Banlist.new(rad_acct_params)
respond_to do |format|
if @rad_acct.save
format.html { redirect_to @rad_acct, notice: 'Banlist was successfully created.' }
format.json { render :show, status: :created, location: @rad_acct }
format.js { redirect_to rad_accts_url }
else
format.html { render :new }
format.json { render json: @rad_acct.errors, status: :unprocessable_entity }
format.js { redirect_to rad_accts_url }
end
end
end
def rad_acct_params
params.permit(:username)
end
#rad_acct view index.html.erb
<% @rad_accts.each do |rad_acct| %>
<tr class="gradeX">
<td><%= rad_acct.username %></td>
<td><%= button_to 'Ban', {:controller => "rad_accts", :action => "create", :username => rad_acct.username } , :method=>:post, data: { confirm: 'Are you sure?' }, remote: true %></td>
</tr>
<% end %>
当我按下按钮时,rad_accts表中的用户名将被复制到黑名单表中。但是,rad_acct索引页面上用于转移用户名的按钮不会消失。
当我从黑名单列表页面删除相应的用户名时,rad_acct索引页面上的按钮应该可见
我该怎么做?
谢谢
答案 0 :(得分:0)
您在按钮中使用remote:true。这意味着该调用是通过javascript进行的。这也意味着对UI的任何更改也应通过Javascript处理。您可以在按钮上添加onclick处理程序,假设您使用jQuery:
$('button#id-of-button').on('click', function() {
$(this).hide()
})
但这只是第一步,因为重新加载会导致按钮再次显示。因此,您还需要使按钮在您的视图中成为条件。由于我不知道您使用什么属性,因此我使用meta:
#rad_acct view index.html.erb
<% @rad_accts.each do |rad_acct| %>
<tr class="gradeX">
<td><%= rad_acct.username %></td>
<td>
<% if rad_acct.user_not_banned? %>
<%= button_to 'Ban', {:controller => "rad_accts", :action => "create", :username => rad_acct.username } , :method=>:post, data: { confirm: 'Are you sure?' }, remote: true %>
<% end %>
</td>
</tr>
<% end %>
答案 1 :(得分:0)
激活的CSS类应该起作用。
.button:active {
display: none;
}
活动类指的是已经单击的链接或标记。然后添加display:none;类的内容应该不可见。