0

私のapplication.html.erbには、それぞれが。を持つ一連のパーシャル<%= render @objects %>をレンダリングするがあります。誰かがコメントを残したときに送信されるのと同じ単一の部分を電子メールでレンダリングしますが、リンクをサーバーのURLで開始したいと思います。_object.html.erb<%= link_to(object) %><%= render @object %>

私はすべてを試しました:

link_to(object)

url_for(object)

before_filter :set_mailer_host
def set_mailer_host
  ActionMailer::Base.default_url_options[:host] = request.host_with_port
end

default_url_options[:host] = "example.com"

def default_url_options
  { host: 'example.com' }
end

...何も機能しません。有無:only_links

最後に、リンクの前にホスト名を追加するダムヘルパーを作成しました。

# application_controller.rb
before_filter { App::request=request }

# application_helper.rb
def hostify obj
  "http://#{App::request.host_with_port}#{url_for obj}"
end

# _object.html.erb:
<%= link_to obj.title, hostify(object) %>

これを行う通常の方法はありますか?

4

3 に答える 3

2

リンクしようとしているものや「obj」が何を指しているのかはわかりませんが、次のようなことができます。

link_to obj.title, {:host => 'example.com'}

また

link_to obj.title, {:controller => 'store', :action => 'view_cart', :host => 'example.com'}
于 2013-01-15T03:55:18.717 に答える
0

それでしばらく過ごした後、私はそれを理解し始めていると思います。

安らかなルートを使用する必要があります。その後、メーラーアクションで設定し、他のコントローラーdefault_url_options[:host] = hostでは:only_pathをtrueに設定できます。default_url_optionsプラス:locale

そして私が持っている見解では:objects_url(object)

ホスト名が異なるためrequest.host_with_port、メールを送信するときにコントローラーからメーラーにパラメーターとして渡します。

link_toパラメータを受け入れずurl_for()、その一部からのみURLを作成できます。

于 2013-01-17T05:34:09.923 に答える
0
def url_options
  { domain: 'example.com' }
end

または、他のオプションを使用する場合にマージすることをお勧めします。

def url_options
  { domain: 'example.com' }.merge(super)
end
于 2017-08-22T19:10:10.447 に答える