Add custom validator and fix .html_safe with rescue
This commit is contained in:
		
							parent
							
								
									ecb75fd085
								
							
						
					
					
						commit
						9f859b903d
					
				|  | @ -9,7 +9,10 @@ class Asset | ||||||
|   field :description, localize: true |   field :description, localize: true | ||||||
|   field :title, localize: true |   field :title, localize: true | ||||||
|    |    | ||||||
|   validates_presence_of :title, :data, :description |   validates :title, :at_least_one => true | ||||||
|  |   validates :description, :at_least_one => true | ||||||
|  |   validates_presence_of :data | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|   belongs_to :asset_category |   belongs_to :asset_category | ||||||
|   belongs_to :assetable, polymorphic: true |   belongs_to :assetable, polymorphic: true | ||||||
|  |  | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | class AtLeastOneValidator < ActiveModel::EachValidator | ||||||
|  | 
 | ||||||
|  |   def validate_each(record, attribute, value) | ||||||
|  |     record.errors[attribute] << (options[:message] || I18n.t("errors.at_least_one")) if (value.blank? || value.values.join.eql?('')) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  | end | ||||||
|  | @ -79,6 +79,9 @@ en: | ||||||
|   visitors_this_month: This month's visitors |   visitors_this_month: This month's visitors | ||||||
|   visitors_this_year: This year's visitors |   visitors_this_year: This year's visitors | ||||||
| 
 | 
 | ||||||
|  |   errors: | ||||||
|  |     at_least_one: must at least have one value | ||||||
|  | 
 | ||||||
|   admin: |   admin: | ||||||
|     access: |     access: | ||||||
|       denied: |       denied: | ||||||
|  |  | ||||||
|  | @ -77,6 +77,9 @@ zh_tw: | ||||||
|   visitors_this_month: 本月造訪 |   visitors_this_month: 本月造訪 | ||||||
|   visitors_this_year: 今年造訪 |   visitors_this_year: 今年造訪 | ||||||
| 
 | 
 | ||||||
|  |   errors: | ||||||
|  |     at_least_one: 必須至少有一個值 | ||||||
|  |      | ||||||
|   admin: |   admin: | ||||||
|     access: |     access: | ||||||
|       denied: |       denied: | ||||||
|  |  | ||||||
|  | @ -57,7 +57,7 @@ class Bulletin | ||||||
|   accepts_nested_attributes_for :bulletin_files, :allow_destroy => true |   accepts_nested_attributes_for :bulletin_files, :allow_destroy => true | ||||||
|   accepts_nested_attributes_for :bulletin_links, :allow_destroy => true |   accepts_nested_attributes_for :bulletin_links, :allow_destroy => true | ||||||
|    |    | ||||||
|   validates :title, :presence => true |   validates :title, :at_least_one => true | ||||||
|    |    | ||||||
|   before_save :check_deadline,:update_status |   before_save :check_deadline,:update_status | ||||||
|    |    | ||||||
|  |  | ||||||
|  | @ -17,11 +17,11 @@ | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
|   <b><%= t('announcement.subtitle') %></b> |   <b><%= t('announcement.subtitle') %></b> | ||||||
|   <%= @bulletin.subtitle.html_safe %> |   <%= @bulletin.subtitle.html_safe rescue '' %> | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
|   <b><%= t('announcement.text') %></b> |   <b><%= t('announcement.text') %></b> | ||||||
|   <%= @bulletin.text.html_safe %> |   <%= @bulletin.text.html_safe rescue '' %> | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
| 	<li> | 	<li> | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
| 	<%= link_to image_tag(@bulletin.image.url, :size => "320x240"), @bulletin.image.url, {:target => '_blank', :title => @bulletin.image_identifier} if @bulletin.image.file %> | 	<%= link_to image_tag(@bulletin.image.url, :size => "320x240"), @bulletin.image.url, {:target => '_blank', :title => @bulletin.image_identifier} if @bulletin.image.file %> | ||||||
| </div> | </div> | ||||||
| <div class="news_paragraph"> | <div class="news_paragraph"> | ||||||
| 	<%= @bulletin.text.html_safe %> | 	<%= @bulletin.text.html_safe rescue '' %> | ||||||
| </div> | </div> | ||||||
| <div class="linkAndFile"> | <div class="linkAndFile"> | ||||||
| 	<% if @bulletin.bulletin_links.size > 0 %> | 	<% if @bulletin.bulletin_links.size > 0 %> | ||||||
|  |  | ||||||
|  | @ -58,7 +58,7 @@ class NewsBulletin | ||||||
|   accepts_nested_attributes_for :news_bulletin_files, :allow_destroy => true |   accepts_nested_attributes_for :news_bulletin_files, :allow_destroy => true | ||||||
|   accepts_nested_attributes_for :news_bulletin_links, :allow_destroy => true |   accepts_nested_attributes_for :news_bulletin_links, :allow_destroy => true | ||||||
|    |    | ||||||
|   validates_presence_of :title |   validates :title, :at_least_one => true | ||||||
|    |    | ||||||
|   before_save :update_status |   before_save :update_status | ||||||
|    |    | ||||||
|  |  | ||||||
|  | @ -17,11 +17,11 @@ | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
|   <b><%= t('news.subtitle') %></b> |   <b><%= t('news.subtitle') %></b> | ||||||
|   <%= @news_bulletin.subtitle.html_safe %> |   <%= @news_bulletin.subtitle.html_safe rescue '' %> | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
|   <b><%= t('news.text') %></b> |   <b><%= t('news.text') %></b> | ||||||
|   <%= @news_bulletin.text.html_safe %> |   <%= @news_bulletin.text.html_safe rescue '' %> | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
| 	<li> | 	<li> | ||||||
|  |  | ||||||
|  | @ -24,7 +24,7 @@ | ||||||
| 			<td><%= image_tag post.image rescue nil %></td> | 			<td><%= image_tag post.image rescue nil %></td> | ||||||
| 			<td> | 			<td> | ||||||
| 				<%= link_to post.title, panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> | 				<%= link_to post.title, panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> | ||||||
| 				<%= post.subtitle.html_safe %> | 				<%= post.subtitle.html_safe rescue '' %> | ||||||
| 			</td> | 			</td> | ||||||
| 			<td><%= display_date(post.postdate) %></td> | 			<td><%= display_date(post.postdate) %></td> | ||||||
| 		</tr> | 		</tr> | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| 	<%= link_to image_tag(@news_bulletin.image.url, :size => "320x240"), @news_bulletin.image.url, {:target => '_blank', :title => @news_bulletin.image_identifier} if @news_bulletin.image.file %> | 	<%= link_to image_tag(@news_bulletin.image.url, :size => "320x240"), @news_bulletin.image.url, {:target => '_blank', :title => @news_bulletin.image_identifier} if @news_bulletin.image.file %> | ||||||
| </div> | </div> | ||||||
| <div class="news_paragraph"> | <div class="news_paragraph"> | ||||||
| 	<%= @news_bulletin.text.html_safe %> | 	<%= @news_bulletin.text.html_safe rescue '' %> | ||||||
| </div> | </div> | ||||||
| <div class="linkAndFile"> | <div class="linkAndFile"> | ||||||
| 	<% if @news_bulletin.news_bulletin_links.size > 0 %> | 	<% if @news_bulletin.news_bulletin_links.size > 0 %> | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
| 			<td><%= image_tag post.image %></td> | 			<td><%= image_tag post.image %></td> | ||||||
| 			<td> | 			<td> | ||||||
| 				<%= link_to post.title, panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> | 				<%= link_to post.title, panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> | ||||||
| 				<%= post.subtitle.html_safe %> | 				<%= post.subtitle.html_safe rescue '' %> | ||||||
| 			</td> | 			</td> | ||||||
| 			<td><%= display_date(post.postdate) %></td> | 			<td><%= display_date(post.postdate) %></td> | ||||||
| 		</tr> | 		</tr> | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
| 		<li> | 		<li> | ||||||
| 			<div class="news_img"><%= image_tag(post.image.url, :size => "290x130") if post.image.file %></div> | 			<div class="news_img"><%= image_tag(post.image.url, :size => "290x130") if post.image.file %></div> | ||||||
| 			<h3 class="h3 news_title"><%= link_to post.title, panel_news_front_end_news_bulletin_path(post, :category_id => post.news_bulletin_category_id) %></h3> | 			<h3 class="h3 news_title"><%= link_to post.title, panel_news_front_end_news_bulletin_path(post, :category_id => post.news_bulletin_category_id) %></h3> | ||||||
| 			<p class="news_wrap"><%= post.subtitle.html_safe %></p> | 			<p class="news_wrap"><%= post.subtitle.html_safe rescue '' %></p> | ||||||
| 		</li> | 		</li> | ||||||
| 		<% end %> | 		<% end %> | ||||||
| 	</ul> | 	</ul> | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
| 		<b><%= t('page_content.context') %></b> | 		<b><%= t('page_content.context') %></b> | ||||||
| 		<%= @page_context.context.html_safe %> | 		<%= @page_context.context.html_safe rescue '' %> | ||||||
| 	</li> | 	</li> | ||||||
| 	<li> | 	<li> | ||||||
| 		<b><%= t('page_content.張貼者') %></b> | 		<b><%= t('page_content.張貼者') %></b> | ||||||
|  |  | ||||||
|  | @ -4,8 +4,8 @@ | ||||||
| <p id="notice"><%= flash_messages %></p> | <p id="notice"><%= flash_messages %></p> | ||||||
| 
 | 
 | ||||||
| <div class="view_count pull-right"><%= dislpay_view_count(@page_context) %></div> | <div class="view_count pull-right"><%= dislpay_view_count(@page_context) %></div> | ||||||
| <h1 class="h1"><%= @page_context.page.title rescue nil %></h1> | <h1 class="h1"><%= @page_context.page.title rescue '' %></h1> | ||||||
| 
 | 
 | ||||||
| <div class="page_content"><%= @page_context.context.html_safe rescue nil %></div> | <div class="page_content"><%= @page_context.context.html_safe rescue '' %></div> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ class WebLink | ||||||
|    |    | ||||||
|   belongs_to :web_link_category |   belongs_to :web_link_category | ||||||
|    |    | ||||||
|   validates_presence_of :title |   validates :title, :at_least_one => true | ||||||
| 
 | 
 | ||||||
|   def self.search( category_id = nil ) |   def self.search( category_id = nil ) | ||||||
|    |    | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue