1

我正在创建可嵌入的小部件,类似于 facebook 的点赞按钮。

我有两个模型:widget 和 widget_like。

我的数据库

在小部件表中,有网站安装了我的“喜欢按钮”。

在 widget_like 表中有网站的喜欢。

小部件控制器

  def show
    @widget = Widget.find(params[:id])
    @like = WidgetLike.new
  end

小部件喜欢控制器

  def create
    @widget = Widget.find(params[:widget_id])
    @like = @widget.widget_likes.build(params[:widget_like])
    if @like.save
      respond_to do |format|
        format.html 
        format.js
      end
    end
  end

小部件/show.js.erb

document.write("<%= escape_javascript(render(:partial => "embed").html_safe) %>");

小部件/embed.html.erb

<%= form_for ([@widget, @like]), :remote => true do |f| %>
    <%= f.submit "widget" %>
<% end %>

问题是我需要我的完整网址来执行我的表单。如何添加它,它安全吗?

4

1 回答 1

1

使用以下url选项form_for

form_for [@widget, @like], remote: true, url: { host: "http://somewebsite.com" } 

它的工作原理与url_for完全相同,并且应该将您提供的选项与form_for.

更新

现在我想到了,还有更简单的:

form_for [@widget, @like], remote: true, url: { only_path: false } 

这将为您提供当前主机的完整网址。此解决方案将更易于维护。

于 2013-03-01T16:18:04.677 回答