我有一个Rails个性测试应用程序,它使用AJAX来呈现问题并显示结果。
我一直试图通过Facebook将变量发送到我的仪表板Rails控制器之一来动态创建标签,从而分享个性测试结果。
但是,首次加载页面时,变量为nil(导致错误),因此我通过添加条件(在application.html.erb中)来修复它:
<% if @cat %>
<meta property="og:title" content="You got <%= @cat.name %>!"/>
<meta property="og:image" content="<%= @cat.picture %>" />
<meta property="og:description" content="<%= @cat.description%>" />
<meta property="og:url" content="https://mysite" />
<meta property="fb:app_id" content= "<%=ENV['FACEBOOK_APP_ID']%>" />
<meta property="og:type" content="website">
<% end %>
当我检查共享调试器时,Facebook无法识别标签。我也尝试用另一个对象(家庭控制器)进行初始化:
def index
if params.has_key?("cat")
@cat = Cat.find_by(name: params["cat"])
else
@cat = Cat.find_by(name: "Colonel Meow")
end
end
有了这个,Facebook不会渲染新值,而是渲染旧值。我在我的application.html中放了一个调试器,以确保变量发生了变化(确实如此)。 Facebook虽然没有刷新。
在分配标签时有没有办法使用条件?或者刷新标签以便Facebook使用新变量?