คำถามติดแท็ก ruby

Ruby เป็นหลายภาษาแพลตฟอร์มตีความโอเพ่นซอร์สเชิงวัตถุแบบไดนามิกที่สร้างขึ้นโดย Yukihiro Matsumoto (Matz) ในปี 1995 แท็ก [ruby] สำหรับคำถามที่เกี่ยวข้องกับภาษา Ruby รวมถึงไวยากรณ์และห้องสมุดของมัน ควรติดแท็กคำถาม Ruby on Rails ด้วย [ruby-on-rails]

8
ประหยัด enum จากการเลือกใน Rails 4.1
ฉันใช้ enums ใน Rails 4.1 เพื่อติดตามสีของไวน์ Wine.rb class Wine < ActiveRecord::Base enum color: [:red, :white, :sparkling] end ในมุมมองของฉันฉันสร้างสิ่งที่เลือกเพื่อให้ผู้ใช้สามารถเลือกไวน์ที่มีสีที่ต้องการได้ f.input :color, :as => :select, :collection => Wine.colors สิ่งนี้สร้าง HTML ต่อไปนี้: <select id="wine_color" name="wine[color]"> <option value=""></option> <option value="0">red</option> <option value="1">white</option> <option value="2">sparkling</option> </select> '1' is not a valid colorแต่เมื่อส่งแบบฟอร์มที่ผมได้รับข้อผิดพลาดในการโต้แย้งระบุ ผมทราบดีว่านี่เป็นเพราะcolorต้องเท่ากับและไม่ได้1"1" มีวิธีบังคับให้ Rails …

25
Ruby Gotchas ที่มือใหม่ควรได้รับการเตือนคืออะไร? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันเพิ่งเรียนรู้ภาษาการเขียนโปรแกรม Ruby และทั้งหมดนี้เป็นภาษาที่ดี แต่ฉันค่อนข้างประหลาดใจที่เห็นว่ามันไม่ง่ายอย่างที่ฉันคาดไว้ อย่างแม่นยำยิ่งกว่านั้น "กฎแห่งความประหลาดใจอย่างน้อยที่สุด" ดูเหมือนจะไม่ได้รับการเคารพสำหรับฉันมากนัก (แน่นอนว่านี่เป็นเรื่องส่วนตัว) ตัวอย่างเช่น: x = true and false puts x # displays true! และมีชื่อเสียง: puts "zero is true!" if 0 # zero is true! "Gotchas" อื่น ๆ ที่คุณจะเตือนมือใหม่ Ruby คืออะไร?
108 ruby 

6
ฉันจะใช้ define_method เพื่อสร้างเมธอดคลาสได้อย่างไร
สิ่งนี้มีประโยชน์หากคุณพยายามสร้าง class method metaprogramatically: def self.create_methods(method_name) # To create instance methods: define_method method_name do ... end # To create class methods that refer to the args on create_methods: ??? end คำตอบของฉันที่จะติดตาม ...

14
ฉันจะเปรียบเทียบแฮชสองอันได้อย่างไร
ฉันกำลังพยายามเปรียบเทียบ Ruby Hashes สองตัวโดยใช้รหัสต่อไปนี้: #!/usr/bin/env ruby require "yaml" require "active_support" file1 = YAML::load(File.open('./en_20110207.yml')) file2 = YAML::load(File.open('./locales/en.yml')) arr = [] file1.select { |k,v| file2.select { |k2, v2| arr << "#{v2}" if "#{v}" != "#{v2}" } } puts arr ผลลัพธ์ไปยังหน้าจอคือไฟล์แบบเต็มจาก file2 ฉันรู้ว่าไฟล์ต่างกัน แต่ดูเหมือนสคริปต์จะไม่รับ
108 ruby  hash 

17
จะตั้งค่าเริ่มต้นใน Rails ได้อย่างไร?
ฉันพยายามหาวิธีที่ดีที่สุดในการตั้งค่าเริ่มต้นสำหรับวัตถุใน Rails สิ่งที่ดีที่สุดที่ฉันคิดได้คือการตั้งค่าเริ่มต้นในnewวิธีการในคอนโทรลเลอร์ ใครมีข้อมูลเข้าบ้างไหมว่าสิ่งนี้ยอมรับได้หรือมีวิธีที่ดีกว่านี้ไหม

14
Ruby: วิธีแปลงสตริงเป็นบูลีน
ฉันมีค่าที่จะเป็นหนึ่งในสี่สิ่ง ได้แก่ บูลีนจริงบูลีนเท็จสตริง "จริง" หรือสตริง "เท็จ" ฉันต้องการแปลงสตริงเป็นบูลีนหากเป็นสตริงมิฉะนั้นปล่อยให้ไม่มีการแก้ไข กล่าวอีกนัยหนึ่ง: "จริง" ควรกลายเป็นจริง "เท็จ" ควรกลายเป็นเท็จ ความจริงควรเป็นจริง เท็จควรเป็นเท็จ

9
วิธีโมดูลส่วนตัวใน Ruby
ฉันมีคำถามสองส่วน ปฏิบัติที่ดีที่สุด ฉันมีอัลกอริทึมที่ดำเนินการบางอย่างกับโครงสร้างข้อมูลโดยใช้อินเทอร์เฟซสาธารณะ ปัจจุบันเป็นโมดูลที่มีวิธีการแบบคงที่จำนวนมากซึ่งเป็นแบบส่วนตัวทั้งหมดยกเว้นวิธีการเชื่อมต่อสาธารณะเพียงวิธีเดียว มีตัวแปรอินสแตนซ์หนึ่งตัวที่ต้องใช้ร่วมกันระหว่างวิธีการทั้งหมด นี่คือตัวเลือกที่ฉันเห็นซึ่งดีที่สุด: โมดูลที่มีวิธีการแบบคงที่ ('โมดูล' ในทับทิม) คลาสด้วยวิธีการคงที่ โมดูลMixinสำหรับรวมไว้ในโครงสร้างข้อมูล Refactorออกเป็นส่วนหนึ่งของขั้นตอนวิธีที่ปรับเปลี่ยนโครงสร้างข้อมูล (เล็กมาก) และให้ที่ mixin ที่เรียกวิธีการคงที่ของโมดูลอัลกอริทึมที่ ส่วนทางเทคนิค มีวิธีใดในการสร้างเมธอด Private Moduleหรือไม่? module Thing def self.pub; puts "Public method"; end private def self.priv; puts "Private method"; end end privateในนั้นดูเหมือนจะไม่ได้มีผลกระทบใด ๆก็ยังสามารถเรียกThing.privโดยไม่มีปัญหา

5
เปลี่ยนชื่อของพารามิเตอร์: id ในการกำหนดเส้นทางทรัพยากรสำหรับ Rails
ฉันมองไปรอบ ๆ เกี่ยวกับวิธีการเปลี่ยนสล็อตพารามิเตอร์แบบไดนามิกและพบว่าโพสต์นี้ทำสิ่งที่แน่นอน โพสต์คือhttps://thoughtbot.com/blog/rails-patch-change-the-name-of-the-id-parameter-in โดยทั่วไปสิ่งที่ทำคือเส้นทางต่อไปนี้: map.resources :clients, :key => :client_name do |client| client.resources :sites, :key => :name do |site| site.resources :articles, :key => :title end end เส้นทางเหล่านี้สร้างเส้นทางต่อไปนี้: /clients/:client_name /clients/:client_name/sites/:name /clients/:client_name/sites/:site_name/articles/:title วิธีแก้ปัญหาอย่างหนึ่งคือการลบล้างdef to_paramเมธอดในโมเดล แต่ฉันต้องการสิ่งนี้โดยไม่ต้องสัมผัสโมเดลนั้นเอง แต่เนื่องจากเป็น Rails 2.x ฉันจะทำสิ่งเดียวกันกับ Rails 3 ได้อย่างไร อัปเดต แอพนี้ใช้ Mongoid ไม่ใช่ AR ดังนั้นอัญมณีที่เป็นมิตรจึงไม่สามารถใช้ afaik ได้

4
ฉันจะเรียกใช้ไฟล์ Ruby ในสภาพแวดล้อม Rails ได้อย่างไร
ฉันต้องการเรียกใช้ไฟล์ Ruby ในบริบทของสภาพแวดล้อม Rails รางวิ่งเกือบจะทำในสิ่งที่ฉันอยากทำ แต่ฉันขอแค่ตั้งชื่อไฟล์และอาร์กิวเมนต์ให้มัน ฉันค่อนข้างมั่นใจว่าเป็นไปได้ตั้งแต่ที่ฉันเคยทำมาก่อน ใครช่วยเตือนฉันได้ไหมว่าต้องทำอย่างไร

9
จะอัปเดต Ruby เป็น 1.9.x บน Mac ได้อย่างไร
ฉันได้สร้างบัญชีผู้ใช้ใหม่บนเครื่อง Mac ของฉันแล้วและฉันกำลังพยายามอัปเดต Ruby เป็นเวอร์ชันปัจจุบัน (1.9.2) จากค่าเริ่มต้นของเสือดาวหิมะที่ 1.8.7 ใครช่วยชี้ให้ฉันดูบทช่วยสอนหรืออธิบายวิธีที่ดีที่สุดในการอัปเดต Ruby บน mac ของฉันจาก 1.8 เป็น 1.9.2 ได้ไหม ขอบคุณ
107 ruby  macos  installation 

2
mattr_accessor ในโมดูล Rails คืออะไร?
ฉันไม่สามารถจริงๆพบนี้ในเอกสารทางรถไฟ แต่ดูเหมือนว่า'mattr_accessor'เป็นโมดูลควันหลงสำหรับ'attr_accessor' (ทะเยอทะยานและหมา) ในทับทิมปกติระดับ เช่น. ในชั้นเรียน class User attr_accessor :name def set_fullname @name = "#{self.first_name} #{self.last_name}" end end เช่น. ในโมดูล module Authentication mattr_accessor :current_user def login @current_user = session[:user_id] || nil end end วิธีการช่วยเหลือนี้มีให้โดยActiveSupport

15
ข้อผิดพลาด“ ไม่พบบันเดิลเลอร์”
เมื่อฉันพยายามทำbundler updateฉันได้รับข้อผิดพลาดนี้: .rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [rake-0.8.7, rake-0.8.7, rubygems-update-1.8.4] (Gem::LoadError) ฉันยังใหม่กับ Ruby มีใครบอกได้ไหมว่าอะไรจะทำให้เกิดปัญหานี้? ติดตั้ง Rake 0.8.7 แล้ว

13
การติดตั้งกลุ่มด้วยการรองรับทับทิม (+ ทับทิม)
ฉันกำลังพยายามติดตั้ง command-t สำหรับ vim แต่ vim เวอร์ชันปัจจุบันของฉันไม่มีแฟล็ก (+ ruby) คำสั่ง "ซึ่งทับทิม" แสดงว่ามีการติดตั้งทับทิม ฉันต้องทำอะไรบ้างเพื่อเปิดใช้งานแฟล็ก + Ruby ในกลุ่ม? นอกจากนี้ในทางเทคนิคแล้วธง + ทับทิมหมายถึงอะไร?
107 ruby  vim 

4
พฤติกรรมแปลก ๆ ที่ไม่คาดคิด (หายไป / เปลี่ยนค่า) เมื่อใช้ค่าเริ่มต้นของแฮชเช่น Hash.new ([])
พิจารณารหัสนี้: h = Hash.new(0) # New hash pairs will by default have 0 as values h[1] += 1 #=> {1=>1} h[2] += 2 #=> {2=>2} ไม่เป็นไร แต่: h = Hash.new([]) # Empty array as default value h[1] <<= 1 #=> {1=>[1]} ← Ok h[2] <<= 2 #=> {1=>[1,2], 2=>[1,2]} ← …
107 ruby  hash 

3
Ruby Arrays: เลือก () รวบรวม () และแผนที่ ()
ไวยากรณ์สำหรับการแมป: a = ["a", "b", "c", "d"] #=> ["a", "b", "c", "d"] a.map {|item|"a" == item} #=> [true, false, false, false] a.select {|item|"a" == item} #=> ["a"] ถามว่าฉันมี: irb(main):105:0> details[1] => {:sku=>"507772-B21", :desc=>"HP 1TB 3G SATA 7.2K RPM LFF (3 .", :qty=>"", :qty2=>"1", :price=>"5,204.34 P"} ฉันต้องการลบทุกรายการที่มีค่าจำนวนว่างในอาร์เรย์นี้หรือเลือกเฉพาะรายการที่มีค่าอยู่ ฉันเหนื่อย: details.map {|item|"" == …
107 ruby  arrays 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.