如果推文包含属于当前用户phrase
的任何blockedshow
,则会收到redacted
div。我希望工具提示告诉用户推文包含的特定短语,当它悬停在推文上时。现在我正在使用@phrases
并且它不起作用。有什么想法吗?
查看
<% if is_redacted? tweet %>
<!-- Tweet contains at least one blocked phrase. -->
<a href="https://www.twitter.com/#{tweet.user.screen_name}"
data-toggle="tooltip" title="This tweet contains the phrase:<%=@phrases%> ">
<%= check_if_redacted(tweet.text)%>
</a>
<% end %>
控制器
class TwitterController < ApplicationController
def index
end
def login
end
def tweet
text = params[:my_tweet]
Client.update(text) unless text==nil
end
private
def is_redacted? tweet
@phrases ||= current_user.blockedshows.map(&:phrases).flatten.map(&:text)
@phrases.any? { |phrase| tweet.text.include? phrase }
end
helper_method :is_redacted?
end
答案 0 :(得分:0)
实例变量@phrases在辅助方法中定义。我不认为它在视图范围内可见。您需要在控制器操作中启动。如果这是在索引中:
def index
@phrases = current_user.blockedshows.map(&:phrases).flatten.map(&:text)
end
我对你的tweet
方法感到有些困惑。这是一个控制器动作还是一个辅助方法。我看起来像一个辅助方法,因为你在视图中引用它(除非这里没有更多的代码)。我也会把tweet放在一个实例变量中,甚至可能是is_redacted。像这样的东西:
def index
@phrases = current_user.blockedshows.map(&:phrases).flatten.map(&:text)
@tweet = Client.update(params[:my_tweet]) unless text==nil
@isredacted = @phrases.any? { |phrase| tweet.text.include? phrase }
end
然后在视图中使用它:
<% if @isredacted %>
<!-- Tweet contains at least one blocked phrase. -->
<a href="https://www.twitter.com/#{@tweet.user.screen_name}"
data-toggle="tooltip" title="This tweet contains the phrase:<%=@phrases%> ">
<%= check_if_redacted(@tweet.text)%>
</a>
<% end %>