頁:
[1]
ruby on rails 中 resources 產生的 helper?
本帖最後由 木紋 於 2015-2-17 02:47 AM 編輯/* 我不太確定這個問題是不是可以發在這個版? 如果錯了的話還請告知、也希望能告訴我要發在哪個版感謝 > < */
# 2015/2/17 被移到 "電腦程式設計" 這個版,感謝管理人的幫忙
如題,我用的是 codecademy 裡面的 rails 架站教程
結束了基本的CRUD,但我想知道一些更細節的東西:
像是,以 C (create/new) 來說
我在controller 裡面就要定義兩個function(分別是new和create)
在view裡面用的 hepler 是 link_to
後面接的參數有兩個,第一個事要顯示的東東
第二個是 new_category_path
我完全不知道這個 new_category_path 是從哪裡來的
同樣的,以 U (update/edit) 來說
controller裡面也要定義兩個 function (為edit和update)
view裡的helper也是用link_to
第二個參數下的是 edit_category_path(class_variable)
我也完全不知道這個 edit_category_path(class_variable) 是從哪裡來的
在routes.rb 裡面,如果沒下 recources('controllerName')
就不會有這些我完全不知道從哪裡來的helper可以用、當然CRUD也不能執行
只是,我不喜歡這種 "可以動就好、管他為什麼" 的感覺..
有人能告訴我、有辦法能看到這些helper的module內容嗎?
又或是、link_to 到這些helper的時後,到底發生了什麼事呢?
感謝
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 我沒學過, 但看了一下這個網頁, 不知道能否解決你的問題.
http://guides.ruby-china.org/routing.html 嗯嗯,這份我有看過、但沒看的很仔細
有寫到會返回該method、但
返回了edit、又是在哪邊繼續執行到 update 的呢?
或是返回了delete、又是在哪邊跳到 destroy 的呢?
我用git去檢查整個專案的變動、發現用resources的時後並沒有新增或修改除了routes.rb以外的任何檔案
說不定根本沒有產生helper也說不定= = 而你所問的這些都是 rails 框架的慣例特性
因為很多功能在框架內都有寫好了
你沒寫並不代表框架什麼事情都沒有做
建議可以多看幾次 https://ihower.tw/rails4/ 的線上電子書
真有興趣還可以去研究 rails 的原始碼
也可以參加各地的 ruby / rails 的社群聚會,相信會有很多收穫 我剛剛才發現實戰聖經的網址開頭是 "ihover"...
他曾經神乎其技地解決了我rails 的問題 = =
了解了,我覺得我還是先把教程都先做個幾遍後、
還有問題再一次發問吧 0w0
感謝<br><br><br><br><br><div></div> 本帖最後由 poqlll 於 2015-2-14 11:54 AM 編輯
new_category_path
edit_category_path
這些都是因為你在route.rb裡頭寫了resources :categoriesrails自動幫你產生的dynamic method
這是ruby on rails的設計原則:
慣例優於設定(convention over configeration)
快速實做出專案雛型(rapid development)
剛接觸rails會不太習慣這個部份
所以你會覺得什麼事都沒做就可以動
除非你想要去深入研究或是維護rails framework
不然不需要去看他怎麼幫你產生
ruby/rails的生態圈就是盡可能重用別人已經寫好的元件(rubygem)
要製造一台車子(web application), 有現成的車輪(rubygem)可以使用, 就不要重複造車輪
用久了rails你會愛上它的
如果你基礎打實了
有興趣深入rails內部
可以閱讀Crafting Rails 4 Applications (它出了兩版, 第一是介紹rails 3)...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 噢噢我知道這是它產生的method
只是我不知道這個method到底坐了什麼事情@@
最搞不懂的部分、
就是為什麼我連的明明是 new_category_path
執行完controller裡的new function後、會自動執行 crete function 這部分
想說在剛開始學習的時候、我還是知道一下該怎麼做輪子比較好這樣@@
頁:
[1]