1

Facebookのいいねボタンのアナログである埋め込み可能なウィジェットを作成しています。

widget と widget_likeの 2 つのモデルがあります。

私のデータベース

ウィジェットテーブルには、私の「いいねボタン」が設置されたウェブサイトがあります。

widget_like テーブルには、ウェブサイトのいいねが表示されます。

ウィジェットコントローラー

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

WidgetLikesController

  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) %>");

widgets/embed.html.erb

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

問題は、フォームの動作中に完全な URL が必要なことです。それを追加する方法は安全ですか?

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 } 

これにより、現在のホストの完全な URL が取得されます。このソリューションは、保守が容易です。

于 2013-03-01T16:18:04.677 に答える