เกิดปัญหา wrong number of arguments (1 for 2)

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

ผมใช้คำสั่ง $ ruby script/generate scaffold table admin เมื่อกด Enter ได้ผลดังนี้ครับ

user@user-desktop:~/Desktop/project_ror/demo$ ruby script/generate scaffold table admin exists app/models/ exists app/controllers/ exists app/helpers/ exists app/views/tables exists app/views/layouts/ exists test/functional/ exists test/unit/ wrong number of arguments (1 for 2)

หาวิธีแก้ใน Google เยอะแล้วเหมือนกัน แก้ยังไม่ได้เลยครับ … แต่เหมือนจะมีคนเกิดปัญหาเหมือนผมเยอะมากๆ

พี่ๆ ช่วยแนะนำหน่อยครับ…

apirak's picture

ผมเดาว่าที่สั่ง ruby script/generate scaffold table admin คือต้องการ generate สองตัวคือ table กับ admin หรือเปล่าครับ ถ้าต้องการแบบนั้นให้สั่งสองครั้ง

ruby script/generate scaffold table

ruby script/generate scaffold admin

ถ้าต้องการ generate แค่ table ที่ชื่อ admin ให้ใช้แค่

ruby script/generate scaffold admin

อาจจะเพราะใน rails 2 เราสามารถสั่ง scaffold แบบนี้ได้เลย

ruby script/generate scaffold admin name:string surname:string net:integer

ทำให้มันไม่สามารถตีความ argument ที่คุณ 0en42chart ใส่ให้มัน

ตั้งแต่ Rails2 ออก ก็จะมีคนเจอปัญหา arguments (1 for 2) กันเยอะ เนื่องจาก rails2 เปลี่ยนวิธีการใช้ scaffold คนที่ทำตาม tutorial เก่าก็เลยสะดุดกันเป็นแถบ

แต่ที่แย่ไปกว่านั้นคือ เวลามันทำออกมาแล้วไม่เหมือนเดิมน่ะครับ

เวลาจะ intro rails ให้ใคร เมื่อก่อนผมก็จะให้ generate scaffold แล้วก็ไปอ่าน/ไปแก้อ่ะครับ ตัวของใหม่ที่ generate ได้มันดันยุ่งยากเหลือเกิน…

apirak's picture

สำหรับการสอนอาจจะยากขึ้นครับ แต่ผมว่าแบบนี้ทำให้ scaffold ใช้งานจริงได้มากขึ้นนะครับ

อ่า ก็จริงครับ…

ผมลองใช้คำสั่ง ruby script/generate scaffold admin name:string surname:string net:integer แล้วครับ

ระบบไม่แจ้งข้อผิดพลาด wrong number of arguments (1 for 2) ครับ

แต่พอผมชองทดสอบบนเว็บบราว์เซอร์ ระบบกลับแจ้งข้อผิดพลาดเป็น undefined method `scaffold’ for AdminController:Class ครับ

ใช้ rails เวอร์ชันอะไรน่ะครับ

ลองสั่ง rails --version ดูได้เปล่าครับ

ถ้าใช้ version 2.0.2 มันไม่น่าจะเรียกใช้เมท็อดนี้แล้วนะครับ

เห็นว่าติดตั้ง Rails ผ่านทาง Synaptic ผมว่ามันตี ๆ กับ Rails เก่าอยู่เปล่าครับ ผมเวลาติดตั้งผ่านทางนั้นแล้ว package มันจะมั่ว ๆ มาก กับ package ที่ติดตั้งจาก ruby gems

ใข้ version 2.0.2 ครับ ตอนนนี้กำลังหาทางเปลี่ยนเวอร์ชั่นอยู่ครับ

มีวิธีแนะนำไหมครับ

apirak's picture

แก้ไฟล์ environment.rb บรรทัดนี้

RAILS_GEM_VERSION = ‘2.0.2’ unless defined? RAILS_GEM_VERSION

ให้เป็น version ที่ต้องการครับ

ส่วนการ install version อื่นๆ ให้พิมพ์

gem install rails -v 1.2.3

เปลี่ยน 1.2.3 เป็น version ที่ต้องการครับ

ไม่ต้องห่วงว่าจะทำให้ใช้ version 2 ไม่ได้นะครับ เพราะการ gem ตัว gem มันจะเก็บไว้ทุก version เลยครับ ไม่มีลบ

พี่ครับผมลองใช้ gem install rails -v 1.2.3 แล้วครับ

ผมแจ้งข้อผิดพลาด /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น