Vote #71372
完了Description diff link in note details is relative when received by email
0%
説明
In the HTML email notification received after an issue description has been updated, the "diff" link is present and relative so clicking on it leads to some http://journals/diff/<...>?detail_id=<...> URL.
!description_diff_in_email_notification.PNG!
journals
It should be either not displayed or absolute.
--------------------------------------------------------------------------------
Apparently the default_url_options of app/models/mailer.rb is not being picked up or fired when link_to is called in the app/helpers/issues_helper.rb.
As a temporary hack we can provide the host and protocol options to link_to. May be there is an elegant solution that I am not aware of.
--------------------------------------------------------------------------------
When I set the ":only_path => false" in the app/models/mailer.rb > def self.default_url_options, it remains so up until line 76 of app/models/mailer.rb. By the time the flow reaches to app/helpers/issues_helper.rb for the diff link, the "only_path" option is "true". Not sure where or how it is being changed.
I am submitting the patch with :only_path => false for the diff_link in the issues_helper.rb. This works for me.
--------------------------------------------------------------------------------
I think I got hold of the reason. The link_to method called from the issues_helper is the one defined in actionpack-2.3.14/lib/action_view/helpers/url_helper.rb
The link_to invokes the url_for and code in question that is causing the trouble is here:
ActionView::Helpers::UrlHelper - lines 83-85
@83 options = { :only_path => options[:host].nil? }.update(options.symbolize_keys)
84 escape = options.key?(:escape) ? options.delete(:escape) : true
85 @controller.send(:url_for, options)
@
We are not passing the :host parameter in the options from the show_detail function of issues_helper, so the line 83 effective sets the
options[:only_path] to true.
On line 85, the @controller.send(:url_for, options) is called which will call the url_for defined in the ActionController::UrlWriter with options[:only_path] = true and hence the host and protocol options(being set in the app/models/mailer.rb) are being ignored.
--------------------------------------------------------------------------------
Yes, I saw that.
I think that this is an issue of RoR @#link_to@ not taking default url_options into account and wanted to have a look to Rails code to see if this has been fixed.
A simple fix would be to override @#url_for@ in Mailer:
<pre><code class="ruby">
def url_for(options={})
options[:only_path] = false
super options
end
</code></pre>
--------------------------------------------------------------------------------
So: fixed in a RoR3 incompatible way with r9022, fixed another way by JPL with r9023.
--------------------------------------------------------------------------------
1.3-stable is not affected (links are not displayed).
--------------------------------------------------------------------------------
Yes they are?
--------------------------------------------------------------------------------
HTML is disabled when displaying change details: source:/tags/1.3.1/app/views/mailer/issue_edit.html.erb
--------------------------------------------------------------------------------
Indeed, it was changed in devel with r8721, I thought it was a 1.3 issue.
So maybe it would have been simpler and even more consistent to set back the @no_html@ to @true@?
--------------------------------------------------------------------------------
related_issues
relates,Closed,6386,Issue mail should render the HTML version of the issue details