基本上我有一个关注按钮,当点击页面刷新时,我会在适当的位置显示一个取消关注按钮。下面是我用来呈现所需特定表单的代码:
follow_forms 部分:
<% unless current_user?(@user) %>
<% if current_user.following?(@user) %>
<%= render 'relationships/partials/unfollow' %>
<% else %>
<%= render 'relationships/partials/follow' %>
<% end %>
<% end %>
任何我将表单更改为 ajax 表单,因为我不希望页面刷新并且表单提交成功后,我想用取消关注按钮/表单替换关注按钮/表单。这不是直截了当的,因为一次只显示一个表单,所以无论如何我都不能使用我的 jquery 选择器来找到这个表单。
我决定做的是创建一个新的操作,以这种方式呈现 follow_form 部分,以便我可以使用我的 jquery 选择器操作适当的表单。
新动作:
class RelationshipsController < ApplicationController
def get_follow_form
respond_to do |format|
format.html { render :partial => 'relationships/partials/follow_form_ajax' }
end
end
end
现在的问题是我无权访问 @user 实例变量。这无关紧要,因为我可以通过 jquery 成功数据获取刚刚被关注的用户,然后将其作为新 ajax 调用中的数据传递给 get_follow_form_url,然后将该信息作为局部变量传递给局部变量。
我仍然有@user 实例变量不可用的问题。这让我想到了我的问题。
如果实例变量不是 nil/不存在,我该如何使用另一个值?
以下表格:
<%= form_for current_user.relationships.build(:followed_id => @user.id), :remote => true do |f| %>
<%= f.hidden_field :followed_id %>
<%= f.submit "Follow", :class => 'followButton' %>
<% end %>
我可以做这样的事情吗
:followed_id => @user.id <-if this doesn't exist use this-> user.id
还有其他方法可以解决这个问题,例如创建仅用于整个情况的新部分或创建一些混乱的 if 语句,但我觉得创建重复表单应该是我最后的选择。
我期待你的解决方案谢谢
亲切的问候