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

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


9
ลบช่องว่างและบรรทัดใหม่ภายใน String
สมมติว่าเรามีสตริงดังนี้: Hello, my\n name is Michael. ฉันจะลบบรรทัดใหม่นั้นและตัดช่องว่างเหล่านั้นหลังจากนั้นเป็นหนึ่งในสตริงเพื่อรับสิ่งนี้ได้อย่างไร Hello, my name is Michael.
105 ruby  string 


5
การแปลงอาร์เรย์ของวัตถุเป็น ActiveRecord :: Relation
ฉันมีอาร์เรย์ของวัตถุเรียกมันว่าไฟล์Indicator. ฉันต้องการเรียกใช้เมธอดคลาส Indicator (พวกdef self.subjectsความหลากหลายขอบเขต ฯลฯ ) บนอาร์เรย์นี้ วิธีเดียวที่ฉันรู้ในการเรียกใช้เมธอดคลาสกับกลุ่มของอ็อบเจ็กต์คือการกำหนดให้เป็น ActiveRecord :: Relation ดังนั้นผมจึงจบลงด้วยการหันไปเพิ่มวิธีการในการto_indicatorsArray def to_indicators # TODO: Make this less terrible. Indicator.where id: self.pluck(:id) end ในบางครั้งฉันเชื่อมโยงขอบเขตเหล่านี้ไว้เล็กน้อยเพื่อกรองผลลัพธ์ลงในวิธีการคลาส แม้ว่าฉันจะเรียกเมธอดบน ActiveRecord :: Relation แต่ฉันก็ไม่รู้วิธีเข้าถึงวัตถุนั้น ฉันสามารถเข้าถึงเนื้อหาของมันได้allเท่านั้น แต่allเป็น Array. ดังนั้นฉันต้องแปลงอาร์เรย์นั้นเป็น ActiveRecord :: Relation ตัวอย่างเช่นนี่เป็นส่วนหนึ่งของหนึ่งในวิธีการ: all.to_indicators.applicable_for_bank(id).each do |indicator| total += indicator.residual_risk_for(id) indicator_count += 1 if indicator.completed_by?(id) …

7
วิธีที่ดีที่สุดในการแปลงคู่ค่าคีย์ที่จัดรูปแบบ json เป็นแฮชทับทิมที่มีสัญลักษณ์เป็นคีย์คืออะไร
ฉันสงสัยว่าวิธีใดเป็นวิธีที่ดีที่สุดในการแปลงคู่ค่าคีย์ที่จัดรูปแบบ json เป็นแฮชทับทิมที่มีสัญลักษณ์เป็นคีย์: ตัวอย่าง: { 'user': { 'name': 'foo', 'age': 40, 'location': { 'city' : 'bar', 'state': 'ca' } } } ==> { :user=>{ :name => 'foo', :age =>'40', :location=>{ :city => 'bar', :state=>'ca' } } } มีวิธีช่วยเหลือที่สามารถทำได้หรือไม่?
104 ruby-on-rails  ruby  json 

8
รับดัชนีขององค์ประกอบอาร์เรย์เร็วกว่า O (n)
เนื่องจากฉันมีอาร์เรย์ขนาดใหญ่และมีค่าจากมัน ฉันต้องการรับดัชนีของค่าในอาร์เรย์ มีวิธีอื่นหรือไม่แล้วโทรArray#indexไปรับมัน? ปัญหามาจากความจำเป็นในการเก็บอาร์เรย์ขนาดใหญ่และการโทรArray#indexจำนวนครั้งมหาศาล หลังจากลองสองสามครั้งฉันพบว่าการแคชดัชนีภายในองค์ประกอบโดยการจัดเก็บโครงสร้างที่มี(value, index)เขตข้อมูลแทนที่จะเป็นค่านั้นทำให้ประสิทธิภาพเป็นขั้นตอนใหญ่ (ชนะ 20 เท่า) ฉันยังสงสัยว่ามีวิธีที่สะดวกกว่าในการค้นหาดัชนีขององค์ประกอบโดยไม่ต้องแคช (หรือมีเทคนิคการแคชที่ดีที่จะช่วยเพิ่มประสิทธิภาพ)

5
ต่อท้ายสตริงที่มีอยู่
เพื่อต่อท้ายสตริงที่มีอยู่นี่คือสิ่งที่ฉันกำลังทำ s = 'hello' s.gsub!(/$/, ' world'); มีวิธีที่ดีกว่าในการต่อท้ายสตริงที่มีอยู่หรือไม่ ก่อนที่จะมีคนแนะนำคำตอบต่อไปนี้แสดงว่าอันนี้ใช้ไม่ได้ s = 'hello' s.object_id s = s + ' world' s.object_id ในกรณีข้างต้น object_id จะแตกต่างกันสำหรับสองกรณี
104 ruby 

12
มีเหตุผลไหมที่เราไม่สามารถทำซ้ำใน "Reverse Range" ในทับทิมได้?
ฉันพยายามทำซ้ำไปข้างหลังโดยใช้ Range และeach: (4..0).each do |i| puts i end ==> 4..0 การวนซ้ำ0..4เขียนตัวเลข ในอีกช่วงหนึ่งr = 4..0ดูเหมือนจะโอเคr.first == 4, r.last == 0. ดูเหมือนว่าจะแปลกสำหรับฉันที่โครงสร้างข้างต้นไม่ได้ผลลัพธ์ที่คาดหวัง อะไรคือเหตุผลสำหรับสิ่งนั้น? อะไรคือสถานการณ์เมื่อพฤติกรรมนี้สมเหตุสมผล?
104 ruby  iteration  range 

7
ปิดใช้งานกลุ่มการทดสอบใน rspec หรือไม่
ฉันมีข้อมูลจำเพาะการทดสอบซึ่งdescribesคลาสและภายในนั้นมีหลากหลายcontextsแต่ละitบล็อกที่แตกต่างกัน มีวิธีปิดการใช้งานcontextชั่วคราวหรือไม่? ฉันลองเพิ่มการpending "temporarily disabled"โทรที่ด้านบนสุดภายในcontextฉันต้องการปิดใช้งานและฉันเห็นบางอย่างเกี่ยวกับการรอดำเนินการเมื่อฉันเรียกใช้ข้อมูลจำเพาะ แต่จากนั้นก็ยังคงเรียกใช้การทดสอบที่เหลือต่อไป นี่คือสิ่งที่ฉันมี: describe Something context "some tests" do it "should blah" do true end end context "some other tests" do pending "temporarily disabled" it "should do something destructive" do blah end end end แต่อย่างที่ฉันบอกว่ามันแค่ทำการทดสอบต่อไปภายใต้การโทรที่รอดำเนินการ การค้นหาทำให้ฉันไปยังเธรดรายชื่ออีเมลนี้ซึ่งผู้สร้าง (?) ของ rspec บอกว่าเป็นไปได้ใน rspec 2 ซึ่งฉันกำลังใช้งานอยู่ ฉันเดาว่ามันใช้งานได้ แต่ไม่มีผลตามที่ต้องการในการปิดใช้งานการทดสอบทั้งหมดต่อไปนี้ซึ่งเป็นสิ่งที่ฉันคิดเมื่อฉันเห็นการpendingโทร มีทางเลือกอื่นหรือว่าฉันทำผิด?
104 ruby  rspec 

6
การใช้ตัวช่วยในโมเดล: ฉันจะรวมการพึ่งพาตัวช่วยได้อย่างไร
ฉันกำลังเขียนแบบจำลองที่จัดการการป้อนข้อมูลของผู้ใช้จากพื้นที่ข้อความ ทำตามคำแนะนำจากhttp://blog.caboo.se/articles/2008/8/25/sanitize-your-users-html-inputฉันกำลังล้างอินพุตในโมเดลก่อนบันทึกลงในฐานข้อมูลโดยใช้ before_validate โทรกลับ. ส่วนที่เกี่ยวข้องของแบบจำลองของฉันมีลักษณะดังนี้: include ActionView::Helpers::SanitizeHelper class Post < ActiveRecord::Base { before_validation :clean_input ... protected def clean_input self.input = sanitize(self.input, :tags => %w(b i u)) end end ไม่จำเป็นต้องพูดมันไม่ได้ผล ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามบันทึกโพสต์ใหม่ undefined method `white_list_sanitizer' for #<Class:0xdeadbeef> เห็นได้ชัดว่า SanitizeHelper สร้างอินสแตนซ์ของ HTML :: WhiteListSanitizer แต่เมื่อฉันผสมลงในโมเดลของฉันมันไม่พบ HTML :: WhiteListSanitizer ทำไม? ฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้


4
ฉันจะตั้งค่าโปรเจ็กต์ Ruby พื้นฐานได้อย่างไร?
ฉันต้องการสร้างโปรเจ็กต์ Ruby ขนาดเล็กที่มี 10 ~ 20 คลาส / ไฟล์ ฉันต้องการอัญมณีและต้องการใช้ RSpec เป็นกรอบการทดสอบ ฉันอาจต้องการสร้างอัญมณีในภายหลัง แต่ก็ไม่แน่ใจ มีวิธีการหรือคำแนะนำที่แสดงวิธีการตั้งค่าโครงสร้างพื้นฐานของโครงการของฉันหรือไม่? คำถามที่ฉันมีคือ: ฉันจะใส่ข้อผิดพลาด / ข้อยกเว้นที่กำหนดเองทั้งหมดไว้ที่ไหน มีข้อกำหนดบางประการสำหรับการตั้งชื่อไดเร็กทอรีเช่น lib, bin, src เป็นต้นหรือไม่? ฉันจะใส่ข้อมูลหรือเอกสารการทดสอบได้ที่ไหน? ฉันต้องการไฟล์ทั้งหมดของฉันที่ไหนเพื่อให้ฉันสามารถเข้าถึงไฟล์เหล่านั้นในโครงการของฉันได้ ฉันรู้ว่าฉันสามารถทำทุกอย่างได้ตั้งแต่เริ่มต้น แต่ฉันต้องการคำแนะนำ มีอัญมณีดีๆมากมายที่ฉันสามารถคัดลอกได้ แต่ฉันไม่แน่ใจว่าต้องการอะไรจริงๆและสิ่งที่ฉันสามารถลบได้ ฉันดูที่http://gembundler.com/แต่มันหยุดหลังจากตั้งค่า Bundler


6
วิธีค้นหาองค์ประกอบโดยการจับคู่ข้อความขององค์ประกอบใน Capybara
ฉันมีสององค์ประกอบต่อไปนี้ใน HTML <a href="/berlin" >Berlin</a> <a href="/berlin" >Berlin Germany </a> ฉันกำลังพยายามค้นหาองค์ประกอบโดยใช้วิธี Capybara ต่อไปนี้ find("a", :text => "berlin") ด้านบนจะแสดงสององค์ประกอบเนื่องจากทั้งสองมีข้อความเบอร์ลิน มีวิธีจับคู่ข้อความใน Capybara หรือไม่?
103 ruby  regex  capybara 

4
การทดสอบตัวควบคุม RSpec - การตอบสนองที่ว่างเปล่าร่างกาย
ฉันติดปัญหาเมื่อทดสอบคอนโทรลเลอร์ด้วย RSpec - response.body call ส่งคืนสตริงว่างเสมอ ในเบราว์เซอร์ทุกอย่างแสดงผลอย่างถูกต้องและการทดสอบคุณสมบัติแตงกวาดูเหมือนจะทำให้ถูกต้อง แต่ RSpec ก็ล้มเหลวทุกครั้ง ความคาดหวังอื่น ๆ เกี่ยวกับวัตถุตอบสนองเช่นการresponse.should render_template('index')ส่งผ่านโดยไม่มีปัญหาใด ๆ คุณเคยพบปัญหานี้มาก่อนหรือไม่? บางที html ตอบกลับสามารถหาได้ด้วยวิธีอื่น? สำหรับเวอร์ชัน Rails 2.1.0, RSpec 1.2.7

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