I have a issue with Locales. In rails app /config/locales/ I have two files: cs.rb & en.yml. At the end, the output of price is in $. Why is this?
my index.html.erb looks
<% if notice %>
<p id="notice" ><%= notice %></p>
<% end %>
<h1>Zoznam produktov</h1>
<% #products.each do |product| %>
<div class="entry" >
<%= image_tag(product.image_url) %>
<h3><%= product.title %></h3>
<%= sanitize(product.description) %>
<div class="price_line" >
<span class="price">
<%= number_to_currency(product.price, :locale => :cs) %>
%>
</span>
</div>
</div>
<% end %>
#Зелёный
First is cs.rb and second is en.yml
# Czech translations for Ruby on Rails
# by Karel Minařík (karmi#karmi.cz)
# contributors:
# - Vít Krchov - http://github.com/vita - Rails 3 update
unless defined?(CzechLocaleI18n::ERROR_MESSAGES)
module CzechLocaleI18n
ERROR_MESSAGES = {
:inclusion => "není v seznamu povolených hodnot",
:exclusion => "je vyhrazeno pro jiný účel",
:invalid => "není platná hodnota",
:confirmation => "nebylo potvrzeno",
:accepted => "musí být potvrzeno",
:empty => "nesmí být prázdný/á/é",
:blank => "je povinná položka", # alternate formulation: "is required"
:too_long => "je příliš dlouhý/á/é (max. %{count} znaků)",
:too_short => "je příliš krátký/á/é (min. %{count} znaků)",
:wrong_length => "nemá správnou délku (očekáváno %{count} znaků)",
:not_a_number => "není číslo",
:greater_than => "musí být větší než %{count}",
:greater_than_or_equal_to => "musí být větší nebo rovno %{count}",
:equal_to => "musí být rovno %{count}",
:less_than => "musí být méně než %{count}",
:less_than_or_equal_to => "musí být méně nebo rovno %{count}",
:odd => "musí být liché číslo",
:even => "musí být sudé číslo",
:not_an_integer => "musí být celé číslo"
}
end
end
{ :'cs' => {
# ActiveSupport
:support => {
:array => {
:two_words_connector => ' a ',
:last_word_connector => ' a ',
:words_connector => ', '
},
:select => {
:prompt => 'Prosím vyberte si',
}
},
# Date
:date => {
:formats => {
:default => "%d. %m. %Y",
:short => "%d %b",
:long => "%d. %B %Y",
},
:day_names => %w{Neděle Pondělí Úterý Středa Čtvrtek Pátek Sobota},
:abbr_day_names => %w{Ne Po Út St Čt Pá So},
:month_names => %w{~ Leden Únor Březen Duben Květen Červen Červenec Srpen Září Říjen Listopad Prosinec},
:abbr_month_names => %w{~ Led Úno Bře Dub Kvě Čvn Čvc Srp Zář Říj Lis Pro},
:order => [:day, :month, :year]
},
# Time
:time => {
:formats => {
:default => "%a %d. %B %Y %H:%M %z",
:short => "%d. %m. %H:%M",
:long => "%A %d. %B %Y %H:%M",
},
:am => 'am',
:pm => 'pm'
},
# Numbers
:number => {
:format => {
:precision => 3,
:separator => '.',
:delimiter => ',',
:significant => false,
:strip_insignificant_zeros => false
},
:currency => {
:format => {
:unit => 'Kč',
:precision => 2,
:format => '%n %u',
:separator => ",",
:delimiter => " ",
:significant => false,
:strip_insignificant_zeros => false
}
},
:human => {
:format => {
:precision => 1,
:delimiter => '',
:significant => false,
:strip_insignificant_zeros => false
},
:storage_units => {
:format => "%n %u",
:units => {
:byte => "B",
:kb => "KB",
:mb => "MB",
:gb => "GB",
:tb => "TB",
}
},
:decimal_units => {
:format => "%n %u",
:units => {
:unit => "",
:thousand => "Tisíc",
:million => "Milion",
:billion => "Miliarda",
:trillion => "Bilion",
:quadrillion => "Kvadrilion"
}
}
},
:percentage => {
:format => {
:delimiter => ''
}
},
:precision => {
:format => {
:delimiter => ''
}
}
},
# Distance of time ... helper
# NOTE: In Czech language, these values are different for the past and for the future. Preference has been given to past here.
:datetime => {
:prompts => {
:second => "Sekunda",
:minute => "Minuta",
:hour => "Hodina",
:day => "Den",
:month => "Měsíc",
:year => "Rok"
},
:distance_in_words => {
:half_a_minute => 'půl minutou',
:less_than_x_seconds => {
:one => 'necelou sekundou',
:other => 'ani ne %{count} sekundami'
},
:x_seconds => {
:one => 'sekundou',
:other => '%{count} sekundami'
},
:less_than_x_minutes => {
:one => 'necelou minutou',
:other => 'ani ne %{count} minutami'
},
:x_minutes => {
:one => 'minutou',
:other => '%{count} minutami'
},
:about_x_hours => {
:one => 'asi hodinou',
:other => 'asi %{count} hodinami'
},
:x_days => {
:one => '24 hodinami',
:other => '%{count} dny'
},
:about_x_months => {
:one => 'asi měsícem',
:other => 'asi %{count} měsíci'
},
:x_months => {
:one => 'měsícem',
:other => '%{count} měsíci'
},
:about_x_years => {
:one => 'asi rokem',
:other => 'asi %{count} roky'
},
:over_x_years => {
:one => 'více než rokem',
:other => 'více než %{count} roky'
},
:almost_x_years => {
:one => 'téměř rokem',
:other => 'téměř %{count} roky'
}
}
},
:helpers => {
:select => {
:prompt => "Prosím vyberte si"
},
:submit => {
:create => "Vytvořit %{model}",
:update => "Aktualizovat %{model}",
:submit => "Uložit %{model}"
}
},
:errors => {
:format => "%{attribute} %{message}",
:messages => CzechLocaleI18n::ERROR_MESSAGES
},
# ActiveRecord validation messages
:activerecord => {
:errors => {
:messages => {
:taken => "již databáze obsahuje",
:record_invalid => "Validace je neúspešná: %{errors}"
}.merge(CzechLocaleI18n::ERROR_MESSAGES),
:template => {
:header => {
:one => "Při ukládání objektu %{model} došlo k chybám a nebylo jej možné uložit",
:other => "Při ukládání objektu %{model} došlo ke %{count} chybám a nebylo možné jej uložit"
},
:body => "Následující pole obsahují chybně vyplněné údaje:"
},
:full_messages => {
:format => "%{attribute} %{message}"
}
}
}
}
}
#
# Sample localization file for English. Add more files in this directory for other locales.
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
en:
hello: "Hello world"
I think, you have not defined cs.yml in locale directory that's why, it is taking default as en locale.
please define cs.yml instead of cs.rb
For this to work you need to have a locale file at config/locales/fr.yml for this to work.
The :locale option only declares to Rails what locale you want it to be. Rails does not have all the translations for every language in the project, and so you must include these translation files yourself.
Related
I am using axlsx gem to generate Excel sheets in Ruby on Rails.
wb = xlsx_package.workbook
wb.styles do |s|
title = s.add_style :b => true, :sz => 10,
:border => { :style => :thin, :color => "00" },
:alignment => {
:horizontal => :center,
:vertical => :center
}
row = s.add_style :b => false,
:sz => 10,
:border => { :style => :thin, :color => "00" },
:alignment => {
:horizontal => :left,
:vertical => :center
}
wb.add_worksheet(name: "Customer") do |sheet|
sheet.add_row ['Customer Name', 'Status'] :style => title
#customers.each do |customer|
sheet.add_row [customer.name, customer.status] :style => row
end
end
how can I conditionally change the row background color if the customer status let say = "Late Payment"
I haven't tested it but this should do the job.
wb = xlsx_package.workbook
wb.styles do |s|
title = s.add_style :b => true, :sz => 10,
:border => { :style => :thin, :color => "00" },
:alignment => {
:horizontal => :center,
:vertical => :center
}
row = s.add_style :b => false,
:sz => 10,
:border => { :style => :thin, :color => "00" },
:alignment => {
:horizontal => :left,
:vertical => :center
}
red_cell_row = s.add_style :b => false,
:sz => 10,
:border => { :style => :thin, :color => "00" },
:alignment => {
:horizontal => :left,
:vertical => :center
},
:bg_color => "FF0000",
:fg_color => "000000"
wb.add_worksheet(name: "Customer") do |sheet|
sheet.add_row ['Customer Name', 'Status'] :style => title
#customers.each do |customer|
if customer.status == "Late Payment"
sheet.add_row [customer.name, customer.status] :style => red_cell_row
else
sheet.add_row [customer.name, customer.status] :style => row
end
end
end
I am trying to add a bank account using Ruby stripe API. but it gives the stripe error "Missing required param: type".
I am using following ruby code:
account = Stripe::Account.create({
:country => 'US',
:managed => true,
:transfer_schedule => {
:interval => 'weekly',
:weekly_anchor => 'friday'
},
:legal_entity => {
:dob => {
:day => birthday.day,
:month => birthday.month,
:year => birthday.year
},
:first_name => first_name,
:last_name => last_name,
:type => 'individual'
},
:tos_acceptance => {
:date => Time.now.to_i,
:ip => request.remote_ip
}
})
You are not passing the proper parameters to the API.
Please check this document for the proper request and response returned by Stripe.
https://stripe.com/docs/api?lang=ruby#create_account
require "stripe"
Stripe.api_key = "sk_test_bcd1234"
Stripe::Account.create(
:type => 'standard',
:country => 'US',
:email => 'bob#example.com'
)
To point out you are not passing :type param in the outer hash. You need to move it to the first level.
account = Stripe::Account.create(
{
:country => 'US',
:managed => true,
:type => 'individual', # Move this from nested to first level
:transfer_schedule => {
:interval => 'weekly',
:weekly_anchor => 'friday'
},
:legal_entity => {
:dob => {
:day => birthday.day,
:month => birthday.month,
:year => birthday.year
},
:first_name => first_name,
:last_name => last_name
},
:tos_acceptance => {
:date => Time.now.to_i,
:ip => request.remote_ip
}
}
)
I'm having trouble with this api and can't seem to get over the hump. Using the HTTP gem (though I'm flexible and can use RestClient if that gets me an answer quicker!). Anyway, I'm having trouble posting an array. everything else is good, I just can't figure out this "itemsarray" in the printaura api found here in the addorder method: PrintAura API
I'm running this:
def self.submitorder
req = HTTP.post("https://api.printaura.com/api.php", :json => {
:key => APIKEY,
:hash => APIHASH,
:method => "addorder",
:businessname => "this is a secret too",
:businesscontact => "thats a secret",
:email => "my#email.com",
:your_order_id => "1",
:returnlabel => "FakeAddress",
:clientname => "ShippingName",
:address1 => "ShippingAddressLine1",
:address2 => "ShippingAddressLine2",
:city => "ShippingCity",
:state => "ShippingState",
:zip => "ShippingZip",
:country => "US",
:customerphone => "dontcallme",
:shipping_id => "1",
:itemsarray => {:item => [
:product_id => 423,
:brand_id => 33,
:color_id => 498,
:size_id => 4,
:front_print => 1389517,
:front_mockup => 1390615,
:quantity => 1
]}
})
puts JSON.parse(req)
end
And my output is this:
{"status"=>false, "error_code"=>19, "result"=>19, "message"=>"You cannot place an order without items, Please fill the items array with all the required information. Full API documentation can be found at https:/www.printaura.com/api/"}
Gosh, if someone could look at that and help me out I would forever appreciate it.
def self.submitorder
itemsarray = { :items => [ { :product_id => 423, :brand_id => 33, :color_id => 498, :size_id => 4, :quantity => 1, :front_print => 1389517,
:front_mockup => 1390617 } ] }
req = HTTP.post("https://api.printaura.com/api.php", :json => {
:key => APIKEY,
:hash => APIHASH,
:method => "addorder",
:businessname => "this is a secret too",
:businesscontact => "thats a secret",
:email => "my#email.com",
:your_order_id => "1",
:returnlabel => "FakeAddress",
:clientname => "ShippingName",
:address1 => "ShippingAddressLine1",
:address2 => "ShippingAddressLine2",
:city => "ShippingCity",
:state => "ShippingState",
:zip => "ShippingZip",
:country => "US",
:customerphone => "dontcallme",
:shipping_id => "1",
:items => Base64.encode64(itemsarray.to_json)}
)
puts JSON.parse(req)
I really hopes this helps somebody some years from now haha
To create a array in JSON you use an array in Ruby. Its that easy.
require 'json'
def self.submitorder
req = HTTP.post("https://api.printaura.com/api.php", :json => {
:key => APIKEY,
:hash => APIHASH,
:method => "addorder",
:businessname => "this is a secret too",
:businesscontact => "thats a secret",
:email => "my#email.com",
:your_order_id => "1",
:returnlabel => "FakeAddress",
:clientname => "ShippingName",
:address1 => "ShippingAddressLine1",
:address2 => "ShippingAddressLine2",
:city => "ShippingCity",
:state => "ShippingState",
:zip => "ShippingZip",
:country => "US",
:customerphone => "dontcallme",
:shipping_id => "1",
:items => [
{
:product_id => 423,
:brand_id => 33,
:color_id => 498,
:size_id => 4,
:front_print => 1389517,
:front_mockup => 1390615,
:quantity => 1
}
]
})
puts JSON.parse(req)
The API lists a items parameter which should contain an array of objects. It says nothing about itemsarray.
When I try to add a variable value into session, I am getting singleton cant be dumped err.
Here is the value in the varibale
[
[0] {
:id => "574ecb43a7a5bb44c000443b",
:_id => "574ecb43a7a5bb44c000443b",
:active => true,
:capabilities => {
:network_connections => [
[0] {
:type => "ethernet-wan",
:name => "wan"
},
[1] {
:type => "ethernet-lan",
:name => "lan"
},
[2] {
:type => "wifi",
:name => "wlan"
},
[3] {
:type => "cellular",
:name => "wwan"
}
]
},
:commander_ids => [],
:created_at => "2016-05-11T15:46:12+00:00",
:deleted_at => nil,
:firmware_upgradable => true,
:ingestor_ids => [],
:last_known_translator_port => nil,
:long_description => "this is a liong desc",
:manufacturer => "test_sushant",
:model => "sushant_test",
:name => "zxc",
:parent_gateway_data_source_type_id => nil,
:rule_ids => [],
:software => "qwe",
:translator => "edge",
:type => "asd",
:updated_at => "2016-05-11T15:46:12+00:00",
:user_id => "572adee5a7a5bb320b000852"
},
The variable is an array of objects. I do not know why this is causing an err.
I'm attempting to create a new AWS Cloudfront Distribution with v2 of the ruby AWS SDK and cannot figure out what is causing this error.
Aws::CloudFront::Errors::MalformedInput: Unexpected list element termination
client = Aws::CloudFront::Client.new
resp = client.create_distribution({
distribution_config: {
caller_reference: Time.now.to_i.to_s,
:aliases => {
:quantity => 1,
:items => [Name.generate_name]
},
:origins => {
:quantity => 1,
:items => [
{
:id => "#{self.id}-distribution",
:domain_name => "example-static.s3-website-us-east-1.amazonaws.com",
:origin_path => "/#{self.id}",
:custom_headers => {
:quantity => 0,
:items => []
},
:custom_origin_config => {
:http_port => 80,
:https_port => 443,
:origin_protocol_policy => "http-only",
:origin_ssl_protocols => {
:quantity => 3,
:items => ["TLSv1","TLSv1.1","TLSv1.2"]
}
}
}
]
},
:default_cache_behavior => {
:target_origin_id => "Custom-example-static.s3-website-us-east-1.amazonaws.com/#{self.id}",
:forwarded_values => {
:query_string => true,
:cookies => {
:forward => "none"
},
:headers => {
:quantity => 1,
:items => ["Origin"]
}
},
:trusted_signers => {
:enabled => false,
:quantity => 0
},
:viewer_protocol_policy => "allow-all",
:min_ttl => 0,
:allowed_methods => {
:quantity => 3,
:items => ["HEAD","GET","OPTIONS"],
:cached_methods => {
:quantity => 3,
:items => ["HEAD","GET","OPTIONS"]
}
},
:smooth_streaming => false,
:default_ttl => 86400,
:max_ttl => 31536000,
:compress => true
},
:cache_behaviors => {
:quantity => 0
},
:custom_error_responses => {
:quantity => 0
},
:comment => "",
logging: {
enabled: true, # required
include_cookies: false, # required
bucket: "example-logs", # required
prefix: "#{self.id}", # required
},
:price_class => "PriceClass_100",
:enabled => true,
:restrictions => {
:geo_restriction => {
:restriction_type => "none",
:quantity => 0
}
}
}
})
I compared the results I got back from an existing instance with
client = Aws::CloudFront::Client.new(:http_wire_trace => true)
resp = client.get_distribution_config({
:id => '<ID>'
})
Changing the payload from
:custom_headers => {
:quantity => 0,
:items => []
},
to
:custom_headers => {
:quantity => 0
},
seemed to fix the same error message for me.