約 2,374,668 件
https://w.atwiki.jp/musukasaba/pages/33.html
歴代マップサイクル一覧 注意事項 demoや動画からその時点でのマップサイクルを推測したもので、全体としての正しさを保証するものではありません。 法則のようなもの deマップとcsマップのそれぞれでアルファベット順に並んでいる オフィシャルマップはカスタムマップとは別に、最後に並んでいる 先頭グループはahoやaosのマップのことが多い マップの改行は4ないし3マップ (先頭のみ?) ごと 表記について ?がついているものは勝手に推測 *がついているものは新規導入または復活したマップ !がついているものはNEXT MAPでのつながりが確認できたペア 2010/06/01 cs_aholibrary_s0 de_aos_mill_s0 ds_aos_monkey_s1 cs_dracula de_alexandra2 de_churchtown de_museum_remake_b6 cs_olympic_beta de_office_complex de_parthenon_ukcs_b1 de_slummi cs_wolfenstein_ur_beta de_splitter_64 de_sultan_64 de_tessa cs_gentech_final de_underline de_wadi knas_rocktown_css_OE_V2 cs_italy de_aztec de_chateau de_dust2 2010/05/24 cs_aholibrary_s0 de_aos_mill_s0 ds_aos_monkey_s1 cs_dracula de_alexandra2 de_churchtown de_office_complex cs_olympic_beta de_parthenon_ukcs_b1 de_slummi de_splitter_64 cs_wolfenstein_ur_beta de_sultan_64 de_techaoslab_beta1 de_tessa cs_gentech_final de_underline de_wadi knas_rocktown_css_OE_V2 cs_italy de_aztec de_chateau de_dust2 2010/01/27 de_aos_base_s0 de_aos_mill_s0 de_aos_monkey_s1 cs_aholibrary_s0 de_ahohouse2_s2 de_bluecorridor_kai de_coldshell_css cs_baltic_corner de_museum_beta1 de_residentevi2_v3 de_sewer_b3 cs_covert de_site23 de_slummi_beta de_subway_z cs_exile_b2 de_ta_v0_8 de_tydirium_b1 de_varikko_v2 cs_occupation de_aztec de_dust2_winter de_train cs_italy 2009/12/09 de_ahomill_s5 de_aos_base_s0 de_aos_monkey_s1 cs_aholibrary_s0 de_ahohouse2_s2 de_bluecorridor_kai de_coldshell_css cs_baltic_corner de_museum_beta1 de_residentevi2_v3 de_sewer_b3 cs_covert de_site23 de_slummi_beta de_subway_z cs_exile_b2 de_ta_v0_8 de_tydirium_b1 de_varikko_v2 cs_occupation de_aztec de_dust2_winter de_train cs_italy 2009/12/08 de_ahomill_s5 de_aos_base_s0 de_aos_monkey_s1 cs_aholibrary_s0 de_ahohouse2_s2 de_bluecorridor_kai de_coldshell_css cs_baltic_corner de_museum_beta1 de_residentevi2_v3 de_sewer_b3 cs_exile_b2 de_site23 de_slummi_beta de_subway_z cs_occupation de_ta_v0_8 de_tydirium_b1 de_varikko_v2 cs_xmas de_aztec de_dust2_winter de_train cs_italy 2009/12/03 de_ahomill_s5 de_aos_base_s0 de_aos_monkey_s1 cs_aholibrary_s0 de_ahohouse2_s2 de_bluecorridor_kai de_coldshell_css * cs_covert de_museum_beta1 de_residentevi2_v3 de_sewer_b3 cs_exile_b2 de_site23 de_slummi_beta de_subway_z cs_occupation de_ta_v0_8 de_tydirium_b1 de_varikko_v2 cs_xmas de_aztec de_dust2_winter de_train cs_italy 2009/11/29 de_ahomill_s5 de_aos_base_s0 de_aosmonkey_s1 cs_aholibrary_s0 de_ahohouse2_s2 de_bluecorridor_kai de_coldshell_css cs_covert de_museum_beta1 de_residentevi2_v3 de_sewer_b3 cs_occupation de_site23 de_slummi_beta de_subway_z cs_tune_zone_b1 de_ta_v0_8 de_tydirium_b1 de_varikko_v2 cs_xmas de_aztec de_dust2_winter de_train cs_italy 2009/9/10 cs_aholibrary_s0 de_ahoferno_s2 de_aos_monkey_s1 cs_business de_bluecorridor_kai de_boston de_facades_beta cs_gentech_final de_hydrofire de_losttemple2 de_perseverance_b4 cs_hospital_tws * de_rush_v2 de_scorch de_site23 cs_oldcity de_subway_z de_varasto_v3 * de_varikko * cs_italy de_chateau de_dust2 de_piranesi 2009/06/13 de_ahoferno_s2 de_aos_monkey_s1 cs_aholibrary_s0 de_bluecorridor_kai * de_boston * de_facades_beta * cs_business de_hydrofire * de_losttemple2 de_minicastle * cs_gentech_final de_perseverance_b4 * de_rush_v2 cs_isku * de_scorch * de_subway_z de_weirdscience02 * cs_oldcity * de_chateau de_dust2 de_piranesi cs_italy 2009/2/23 cs_aholibrary_s0 de_ahoferno_s2 de_aos_monkey_s1 cs_aa_hospital_b1 * de_adrenalin * de_bluecorridor de_force * cs_business de_hydrofire_b1 de_lostemple2 de_museum_remake_b6 cs_gentech_final de_rush_v2 de_sa_cargo de_scorch_rc1 * cs_hockey * de_scud * de_subway de_westcoast * cs_italy de_aztec * de_dust2 de_piranesi 2009/1/12 過去マップがいくつか復活してる de_vostokは無かった模様 de_ahoferno_s2 de_aos_monkey_s1 cs_aholibrary_s0 de_bluecorridor de_cityfever De_Crypt_CN_v1? de_coldshell_css? de_fearmansion? de_glacier? cs_baltic_corner de_hydrofire_b1 de_losttemple2 de_mocos_mw_07 cs_business de_museum_remake_b6 de_rush_v2 de_sa_cargo cs_covert? cs_exile_b2? de_subway_z de_ta_v0_8 de_terminus2 cs_gentech_final de_chateau de_dust2 de_piranesi cs_italy 2008/10/26 de_hydrofire_b108/10/09 de_subway_z08/10/11 de_underway08/10/11 de_cbble_night08/10/12 de_ahoferno_s208/10/12 de_acid_b208/10/18 de_bugsoft_final08/10/26 de_fearmansion08/10/26 de_halflandia08/10/26 de_haunts08/10/26 de_operation_groundhog08/10/26 de_ahoferno_s2 de_crimson de_museum_remake_b6 cs_gentech_final de_rush_v2 de_losttemple_v2 cs_militia cs_xmas cs_covert de_nuke de_dust2 2008/10/13 ムスカ史上最大のマップ数? de_ahoffice_s2 de_ahoferno_s2 de_acid_b2 de_cbble_night de_hydrofire_b1 de_losttemple2 de_museum_remake_b6? de_rush de_subway_z de_underway cs_covert de_nuke cs_office de_chateau 2008/9/12 de_livehouse de_losttemple2 de_piranesi ! cs_aholibrary_s0 ! cs_xmas de_tides? cs_alps_css_rc1 cs_exile_b2 2008/8/26 de_aos_monkey_s1* de_ahohouse2_ext_s0* de_residentevil2_v3 de_unhallowed_b1 2008/8/15 de_varasto* de_toxin_50* de_aos_monkey_s0* de_metro* 2008/8/2-4 cs_exile_b2 * de_livehouse * de_chateau * cs_alps_css_rc1* de_unhallowed_b1* cs_friesland_beta ? de_residentevil2_v3* 2008/5/31 de_ahohouse_s5 de_ahohouse2_s2 ! cs_aholibrary_s0 de_concarve de_crush de_industrials cs_business de_losttemple2_beta de_museum_beta1 de_museum_remake_b6 cs_gentech_final de_rotterdam de_rush_v2 de_sa_cargo cs_occupation de_siena de_ta_v0_8 de_tydirium_b1 cs_tune_zone_b1 de_aztec de_dust2 de_inferno cs_italy 2008/2/22? cs_gentech_final ! de_museum_beta1! cs_aholibrary_s0 de_ahohouse_s5 de_aholibrary de_crush De_Crypt_CN_v1 * de_darkcastle_rebirth De_Dark_Sanctuary_CN * de_icewerk de_museum_remake_b6 de_overdrive de_sa_cargo de_sewer_bg de_siena de_solitude de_ta_v0_8 de_tydirium_b1 * de_warzaland_v3 cs_business cs_central cs_exile_b2 cs_occupation cs_onsen cs_oscorp cs_xmas de_aztec ! de_cbble ! de_dust2_winter? cs_italy 2008/01/08 cs_complex * cs_winter_docks2007 * de_museum_beta1 2007/12/14 de_ahohouse2_s2 de_ahomill_s5 cs_aholibrary_s0 de_bluecorridor de_city64v2 de_cityfever cs_atafaris+ * de_glacier * de_losttemple2_beta de_museum_remake_b6 * cs_business ujo_de_okinotori de_shishi2007_v2 de_ta_v0_8 cs_gentech_final de_dust2 de_aztec de_piranesi cs_italy 2007/11/2 de_ahohouse2_s2 de_ahomill_s5 cs_aholibrary_s0 de_bluecorridor de_city64v2 de_cityfever * cs_baltic_corner de_losttemple2_beta de_mocos_mw_07 de_museum_remake_b2 cs_business ujo_de_okinotori de_shishi2007_v2 * de_ta_v0_8 cs_gentech_final cs_italy 2007/9/26 de_ahohouse2_s2 ujo_de_okinotori? cs_aholibrary_s0 de_icewerk de_losttemple2_beta de_mocos_mw_07 cs_business de_museum_remake_b2 de_overdrive * de_ta_v0_8 cs_gentech_final de_dust2 de_piranesi de_train cs_italy 2007/9/2 de_ahohouse2_s2? de_ahomill_s5 cs_aholibrary_s0? de_bluecorridor de_cbble de_city64v2 cs_gentech_final de_darkcastle_rebirth de_icewerk de_losttemple2_beta cs_occupation de_mocos_mw_07 de_museum_remake_b2 de_ta_v0_8 ujo_de_okinotori * de_aztec de_dust2 de_train cs_italy
https://w.atwiki.jp/nwwiki/pages/56.html
概要 2023/8/3に実装されるNewWorld Update 2.0.2の日本語翻訳です。 NewWorld Update 2.0.2 本文:https //www.newworld.com/en-us/news/articles/new-world-update-2-0-2 目次 アップデート内容パフォーマンスの変更 コンバット エリートサンドワームトライアル 経済、プログレッション、装備 シーズンパス シーズントライアル クエスト ゲームモード UX/UI アップデート内容 メンテナンス日時:8/2(水) 20 00~21 30(日本時間) 問題が見つかったため、アップデートは延期されました。 メンテナンス日時:8/3(木) 20 00~21 30(日本時間)
https://w.atwiki.jp/tomo3/pages/35.html
メニュー トップページ プログラム プログラム課題 プログラム演習 プログラム習得法 モデリング ゲーム Ruby CityVille 読書 化学 将棋 英語 英語勉強法 英単語学習法 リンク ここを編集
https://w.atwiki.jp/rahab/pages/293.html
RAHAB in ToS(業務委託) 公式:http //tos.nexon.co.jp/ お問い合わせ・資料請求はこちら: https //twitter.com/magicalkasnim/status/770764714867437568
https://w.atwiki.jp/retrogamewiki/pages/1666.html
今日 - 合計 - バブルボブルOLD NEWの攻略ページ 目次 基本情報 [部分編集] ストーリー [部分編集] 攻略情報 [部分編集] Tips [部分編集] プチ情報 [部分編集] 関連動画 [部分編集] 参考文献、参考サイト [部分編集] 感想・レビュー 基本情報 [部分編集] ストーリー [部分編集] 攻略情報 [部分編集] Tips [部分編集] プチ情報 [部分編集] 関連動画 [部分編集] 参考文献、参考サイト [部分編集] 感想・レビュー 名前 コメント 選択肢 投票 役に立った (0) 2012年10月09日 (火) 14時21分16秒 [部分編集] ページごとのメニューの編集はこちらの部分編集から行ってください [部分編集] 編集に関して
https://w.atwiki.jp/nekonomike/pages/27.html
Menu Mary-Kate and Ashley Olsen News, Info, Gossip, etc 英語が全然なんでサイトで訳したのほぼまんま載せてますm(__)m #weblog
https://w.atwiki.jp/touhoukashi/pages/3638.html
【登録タグ C Cold Wave おてんば恋娘 少女フラクタル 曲 柚木梨沙】 【注意】 現在、このページはJavaScriptの利用が一時制限されています。この表示状態ではトラック情報が正しく表示されません。 この問題は、以下のいずれかが原因となっています。 ページがAMP表示となっている ウィキ内検索からページを表示している これを解決するには、こちらをクリックし、ページを通常表示にしてください。 /** General styling **/ @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight 350; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/10/NotoSansCJKjp-DemiLight.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/9/NotoSansCJKjp-DemiLight.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/8/NotoSansCJKjp-DemiLight.ttf) format( truetype ); } @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight bold; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/13/NotoSansCJKjp-Medium.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/12/NotoSansCJKjp-Medium.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/11/NotoSansCJKjp-Medium.ttf) format( truetype ); } rt { font-family Arial, Verdana, Helvetica, sans-serif; } /** Main table styling **/ #trackinfo, #lyrics { font-family Noto Sans JP , sans-serif; font-weight 350; } .track_number { font-family Rockwell; font-weight bold; } .track_number after { content . ; } #track_args, .amp_text { display none; } #trackinfo { position relative; float right; margin 0 0 1em 1em; padding 0.3em; width 320px; border-collapse separate; border-radius 5px; border-spacing 0; background-color #F9F9F9; font-size 90%; line-height 1.4em; } #trackinfo th { white-space nowrap; } #trackinfo th, #trackinfo td { border none !important; } #trackinfo thead th { background-color #D8D8D8; box-shadow 0 -3px #F9F9F9 inset; padding 4px 2.5em 7px; white-space normal; font-size 120%; text-align center; } .trackrow { background-color #F0F0F0; box-shadow 0 2px #F9F9F9 inset, 0 -2px #F9F9F9 inset; } #trackinfo td ul { margin 0; padding 0; list-style none; } #trackinfo li { line-height 16px; } #trackinfo li nth-of-type(n+2) { margin-top 6px; } #trackinfo dl { margin 0; } #trackinfo dt { font-size small; font-weight bold; } #trackinfo dd { margin-left 1.2em; } #trackinfo dd + dt { margin-top .5em; } #trackinfo_help { position absolute; top 3px; right 8px; font-size 80%; } /** Media styling **/ #trackinfo .media th { background-color #D8D8D8; padding 4px 0; font-size 95%; text-align center; } .media td { padding 0 2px; } .media iframe nth-of-type(n+2) { margin-top 0.3em; } .youtube + .nicovideo, .youtube + .soundcloud, .nicovideo + .soundcloud { margin-top 0.75em; } .media_section { display flex; align-items center; text-align center; } .media_section before, .media_section after { display block; flex-grow 1; content ; height 1px; } .media_section before { margin-right 0.5em; background linear-gradient(-90deg, #888, transparent); } .media_section after { margin-left 0.5em; background linear-gradient(90deg, #888, transparent); } .media_notice { color firebrick; font-size 77.5%; } /** Around track styling **/ .next-track { float right; } /** Infomation styling **/ #trackinfo .info_header th { padding .3em .5em; background-color #D8D8D8; font-size 95%; } #trackinfo .infomation_show_btn_wrapper { float right; font-size 12px; user-select none; } #trackinfo .infomation_show_btn { cursor pointer; } #trackinfo .info_content td { padding 0 0 0 5px; height 0; transition .3s; } #trackinfo .info_content ul { padding 0; margin 0; max-height 0; list-style initial; transition .3s; } #trackinfo .info_content li { opacity 0; visibility hidden; margin 0 0 0 1.5em; transition .3s, opacity .2s; } #trackinfo .info_content.infomation_show td { padding 5px; height 100%; } #trackinfo .info_content.infomation_show ul { padding 5px 0; max-height 50em; } #trackinfo .info_content.infomation_show li { opacity 1; visibility visible; } #trackinfo .info_content.infomation_show li nth-of-type(n+2) { margin-top 10px; } /** Lyrics styling **/ #lyrics { font-size 1.06em; line-height 1.6em; } .not_in_card, .inaudible { display inline; position relative; } .not_in_card { border-bottom dashed 1px #D0D0D0; } .tooltip { display flex; visibility hidden; position absolute; top -42.5px; left 0; width 275px; min-height 20px; max-height 100px; padding 10px; border-radius 5px; background-color #555; align-items center; color #FFF; font-size 85%; line-height 20px; text-align center; white-space nowrap; opacity 0; transition 0.7s; -webkit-user-select none; -moz-user-select none; -ms-user-select none; user-select none; } .inaudible .tooltip { top -68.5px; } span hover + .tooltip { visibility visible; top -47.5px; opacity 0.8; transition 0.3s; } .inaudible span hover + .tooltip { top -73.5px; } .not_in_card span.hide { top -42.5px; opacity 0; transition 0.7s; } .inaudible .img { display inline-block; width 3.45em; height 1.25em; margin-right 4px; margin-bottom -3.5px; margin-left 4px; background-image url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2971/7/Inaudible.png); background-size contain; background-repeat no-repeat; } .not_in_card after, .inaudible .img after { content ; visibility hidden; position absolute; top -8.5px; left 42.5%; border-width 5px; border-style solid; border-color #555 transparent transparent transparent; opacity 0; transition 0.7s; } .not_in_card hover after, .inaudible .img hover after { content ; visibility visible; top -13.5px; left 42.5%; opacity 0.8; transition 0.3s; } .not_in_card after { top -2.5px; left 50%; } .not_in_card hover after { top -7.5px; left 50%; } .not_in_card.hide after { visibility hidden; top -2.5px; opacity 0; transition 0.7s; } /** For mobile device styling **/ .uk-overflow-container { display inline; } #trackinfo.mobile { display table; float none; width 100%; margin auto; margin-bottom 1em; } #trackinfo.mobile th { text-transform none; } #trackinfo.mobile tbody tr not(.media) th { text-align left; background-color unset; } #trackinfo.mobile td { white-space normal; } document.addEventListener( DOMContentLoaded , function() { use strict ; const headers = { title アルバム別曲名 , album アルバム , circle サークル , vocal Vocal , lyric Lyric , chorus Chorus , narrator Narration , rap Rap , voice Voice , whistle Whistle (口笛) , translate Translation (翻訳) , arrange Arrange , artist Artist , bass Bass , cajon Cajon (カホン) , drum Drum , guitar Guitar , keyboard Keyboard , mc MC , mix Mix , piano Piano , sax Sax , strings Strings , synthesizer Synthesizer , trumpet Trumpet , violin Violin , original 原曲 , image_song イメージ曲 }; const rPagename = /(?=^|.*
https://w.atwiki.jp/eslina/pages/32.html
名称 load_uos_into_gddr - uOS イメージの転送 書式 int load_uos_into_gddr( mic_ctx_t * mic_ctx, char * imgname, uint32_t * uos_size, uint64_t * uos_cmd_offset); 引数 mic_ctx イメージを転送するカードの context imgname イメージが格納されているファイルのパス名文字列 uos_size イメージサイズ格納用の領域 uos_cmd_offset 転送後のイメージ end の apertune 内オフセット格納用領域 説明 引数 mic_ctx が示すカードに、引数 imgname が示すファイルの内容を uOS イメージとして転送する。 引数 uos_size が示す領域に、転送した uOS イメージのサイズを格納する。 引数 uos_cmd_offset が示す領域に、転送した uOS イメージの直後の aperture 内オフセットを格納する。 mic_ctx の apic_id メンバに、BSP の APIC ID を格納する。 mic_ctx の状態が MIC_BOOT 以外の場合、メッセージ "Not in booting state" を出力して -EPERM エラーを返す。 mic_get_file_size() に失敗した場合、メッセージ "image not found <パス名> , status returned <MIC_BOOTFAIL の値>" を出力してエラーを返す。 このとき mic_ctx の状態を MIC_BOOTFAIL にする。 戻り値 処理に成功した場合、引数 uos_size と uos_cmd_offset が示す領域に値を格納して、0 を返す。 そうでない場合、0 以外の値を返す。この場合、uos_size が示す領域を壊すことがある? -EPERM 状態が MIC_BOOT 以外の場合 XXX mic_get_file_size に失敗した場合 参照 XXX 実装 host/driver/uos_download.c 433 /* 434 DESCRIPTION loads uos image at given path into gddr 435 PARAMETERS 436 [in]mic_ctx_t *mic_ctx - mic context 437 [in]imgname - file path for uos file to be loaded 438 [out]uos_size - size of uos image 439 */ 440 int 441 load_uos_into_gddr(mic_ctx_t *mic_ctx, char *imgname, uint32_t* uos_size, uint64_t *uos_cmd_of fset) 442 { 443 void *aperture_va; 444 uint8_t *mmio_va; 445 uint32_t apic_id = 0; 446 uint32_t uos_load_offset = 0; 447 uint32_t adapter_memsize = 0; 448 int status = 0; 449 450 aperture_va = mic_ctx- aper.va; 451 mmio_va = mic_ctx- mmio.va; 452 453 if (mic_ctx- state != MIC_BOOT) { 454 printk("Not in booting state\n"); 455 return -EPERM; 456 } 457 458 status = mic_get_file_size(imgname, uos_size); 459 if (status) { 460 mic_ctx- state = MIC_BOOTFAIL; 461 printk("image not found at %s , status returned %d\n", imgname, status); 462 return status; 463 } 464 465 status = [[get_uos_loadoffset]](mmio_va, uos_load_offset); 466 // Determine the uOS reserve size after we have the m_pXpu interface 467 [[get_adapter_memsize]](mmio_va, adapter_memsize); 468 469 status = [[get_apic_id]](mmio_va, apic_id); 470 // store apic_id in adapter context for later use 471 mic_ctx- apic_id = apic_id; 472 473 if (mic_ctx- bi_family == FAMILY_ABR){ 478 } 479 480 // transfer uOs image file to gddr 481 status = mic_load_file(imgname, ((uint8_t*)aperture_va) + uos_load_offset, *uos_size); 482 483 // for the emulator we want to skip "downloading" the file 484 *uos_cmd_offset = (uint64_t)uos_load_offset + *uos_size; 485 486 // This only applies to KNF bootstrap, it is NOT needed for KNC 487 if (mic_ctx- bi_family == FAMILY_ABR) { 491 } 492 493 return status; 494 } 483 行目のコメントに対応する行がない。 466 行目のコメントも少し違う。 この辺りに別の処理があるらしい。
https://w.atwiki.jp/msrs/pages/81.html
アーティスト MOON CHILD 作詞 佐々木収 作曲 佐々木収 編曲 MOON CHILD 時間 4 29 収録作品 Treasures of MOON CHILD(M-1)COMPLETE BEST(DISC1 M-1) 「未発表曲」としてベスト盤に収録されたが、実は解散後に作詞とボーカル録りが行われたという「未完成曲」だった。 ライブ音源 収録作品 PRIMITIVE VOICE(ササキオサム/M-9) 【読み ごーるど】 【タグ 1999年 MOONCHILD Treasures_of_MOONCHILD こ】
https://w.atwiki.jp/eyes_33/pages/31.html
Scaffolding(スキャフィールディング)を使ってみよう! まずは、作っちゃったモデルとかを削除 モデルの削除は、destoryで rails destroy model book DBの削除も[rake]で rake db drop で、scaffoldでモデル等を生成 rails g scaffold book isbn string title string price integer publish string published date cd boolean 単にモデル作る時のコマンドが、modelからscaffoldになっただけ モデルとかができたら、後はテーブル作成すればOK! rake db migrate 後は、URL叩けばActiveRecordにいきなりアクセス可能!こりゃ簡単だ!すごいね! http //localhost 3000/books Scaffoldingで作られたルートって、結構すごいよ。 実は、config/routes.rbには以下の記述があるだけ。 resources books でも、これ結構いろいろやってくれるらしい。[rake routes]で確認すると…? C \user\dev\railbook rake routes books GET /books(. format) { action= "index", controller= "books"} POST /books(. format) { action= "create", controller= "books"} new_book GET /books/new(. format) { action= "new", controller= "books"} edit_book GET /books/ id/edit(. format) { action= "edit", controller= "books"} book GET /books/ id(. format) { action= "show", controller= "books"} PUT /books/ id(. format) { action= "update", controller= "books"} DELETE /books/ id(. format) { action= "destroy", controller= "books"} / controller(/ action(/ id(. format))) とまあ、基本的なbooksへのアクセスルートを設定してくれるんだ!すごいね、これ。 Scaffoldingの各アクション アクションは例によって、[app/controllers/books_controller.rb]ですね。 index(一覧) 短い割には、意外に色々詰まってるindexのアクションメソッド def index @books = Book.all respond_to do |format| format.html # index.html.erb format.json { render json @books } end end 上記のrespond_toでフォーマット毎の出力をするらしい。 普通はHTMLなんでindex.html.erbで表示して、[http //localhost 3000/books.json]みたいだとJSON形式で表示 でテンプレートでは、ついにヘルパーがお出まし link_toではリンクを生成(そりゃそうかw) テンプレート側がこうだと、 %= link_to New Book , new_book_path % 出力HTMLはこんな感じ a href="/books/new" New Book /a new_book_pathは、ルート定義されたビューヘルパーなんだ!他にもいろいろ自動生成されてるよ。 これ、すげーな。 td %= link_to Show , book % /td って書くと、渡されたbookオブジェクトを元に、[book.id]を取得しようとして、自動でIDを降ってこんな感じでHTML出力される! td a href="/books/1" Show /a /td 確認画面も簡単に出せるんだ! td %= link_to Destroy , book, confirm Are you sure? , method delete % /td へー。出力結果を見ると、data-confirmが定義されてるだけなのか。 td a href="/books/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow" Destroy /a /td これが、Rails3の 控えめなJavaScript(Unobtrusive JavaScript) ってことなんだねー。 show(詳細表示) アクションだと、params[ id]で、URLの[/books/1]の1を取れる。この形式でリクエストも取れるらしい。 @book = Book.find(params[ id]) new/create(登録) newは新規登録画面を出すアクションで、createは実際の登録のアクションだね。 あれ?newのテンプレートに、formの記述がこれしかない… %= render form % おおー、実体は[_form.html.erb]の方なんだ。 なるほどね。登録と更新でほとんど一緒のformだから、部分テンプレートにしてるのか。かしこいなー。 うお!createでのパラメタ取得、めちゃくちゃ簡単なんだ! @book = Book.new(params[ book]) これだけで、bookオブジェクトでき上がりとは…。 この場合、params[ book]で、フォームのbook[***]の値を全部取ってくるらしい。 後は、@book.save で登録するだけか…。なんと簡単な…。 Scaffoldingのcreateメソッドでは、ちゃんと登録済み確認して、redirect_toでnoticeを出すらしい。 def create @book = Book.new(params[ book]) respond_to do |format| if @book.save format.html { redirect_to @book, notice Book was successfully created. } format.json { render json @book, status created, location @book } else format.html { render action "new" } format.json { render json @book.errors, status unprocessable_entity } end end end あ、ここで指定したnoticeが、show.html.erbの一番上のnoticeに出るわけねー。良くできてるわ。 p id="notice" %= notice % /p しかも、エラー時は@bookをそのまま使ってnew画面を出すから、入力データはそのまま表示されるのか!あったまいい! edit/update(更新) editアクションはパラメタからID取って表示するだけ。 updateアクションも、基本の構造はcreateと一緒。違うのは@book.saveじゃなくて、@book.update_attributesを使うってとこ。 def update @book = Book.find(params[ id]) respond_to do |format| if @book.update_attributes(params[ book]) format.html { redirect_to @book, notice Book was successfully updated. } format.json { head ok } else format.html { render action "edit" } format.json { render json @book.errors, status unprocessable_entity } end end end @book.update_attributesは内部的にsaveを呼んでるから、savaのコールは不要 JSONでの更新成功時にある[head ok]は、HTTPのステータスのみでコンテンツなしを返す便利メソッド。ここでは[200 OK]を返すって訳 format.json { head ok } edit.html.erbは、newとeditで共通の部分テンプレートだけど、結構面白い。 %= form_for(@book) do |f| % このform_forって、オブジェクトが空だとその後の出力がいろいろと変化するらしい。 ------------- 空(new) 値あり(edit) 送信先アドレス /books /books/1 HTTPメソッド post put(疑似) 実際にはputはブラウザが対応してないから、hiddenで[name="_method" value="put"]って書いて、Railsで疑似ってるんだー まあ、なんか面倒だけど例の「RESTfulインタフェース」の方針に従っての実装なんだねー。つうか、ブラウザ頑張れよってことかw destroy(削除) 削除は、単に@book.destroyするだけ。 def destroy @book = Book.find(params[ id]) @book.destroy respond_to do |format| format.html { redirect_to books_url } format.json { head ok } end end ここでも、JSON時は[head ok]のみ返す感じ。 -