Defect #10251
closed
Description diff link in note details is relative when received by email
Added by Etienne Massip over 12 years ago.
Updated over 4 years ago.
Category:
Email notifications
Description
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.
![](/attachments/download/7213/description_diff_in_email_notification.PNG)
Files
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:
def url_for(options={})
options[:only_path] = false
super options
end
- Status changed from Confirmed to Resolved
- Target version changed from Candidate for next minor release to 1.3.2
- Resolution set to Fixed
So: fixed in a RoR3 incompatible way with r9022, fixed another way by JPL with r9023.
- Status changed from Resolved to Closed
- Target version changed from 1.3.2 to 1.4.0
- Affected version (unused) changed from 1.3.1 to devel
- Affected version deleted (
1.3.1)
1.3-stable is not affected (links are not displayed).
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
?
Also available in: Atom
PDF