やはりダイレクトにパスを入れたら大変厄介な事になります。railsプロジェクト内のpublicがアパッチのドキュメントルートに設定されているうちは問題は発生しませんが、http://www.XXX.XXX/books <==これは問題ない
http://wwwXXX.XXX/YYY/books <==YYYの部分が変わるので、YYYの部分を意識しなければならない。rails関数を使えば自動でやってくれるので、出来るだけrails関数を使った方がコードが少なくなります。
以下の様なルーティング定義をroutes.rbに書き込むと、その下に表示されているような関数が来ます。出来るだけそれを使った方が無難です。注意:関数名の最後は_path or _urlです
http://wwwXXX.XXX/YYY/books <==YYYの部分が変わるので、YYYの部分を意識しなければならない。rails関数を使えば自動でやってくれるので、出来るだけrails関数を使った方がコードが少なくなります。
resources :posts do resource :comments do end end
$rake routes post_comments POST /posts/:post_id/comments(.:format) comments#create new_post_comments GET /posts/:post_id/comments/new(.:format) comments#new edit_post_comments GET /posts/:post_id/comments/edit(.:format) comments#edit GET /posts/:post_id/comments(.:format) comments#show PUT /posts/:post_id/comments(.:format) comments#update DELETE /posts/:post_id/comments(.:format) comments#destroy posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroyパスチップス1 コメント新規作成に関してはtype1とtype2は同じ paramsは:post_id と:comment=>{}が入っています。結構便利です。
type1: <%= form_for([@post,@post.comments.build]) do |f| %> type2: <%= @post.comments %> <%= @comment = Comment.new %> <%= form_for([@post,@comment]) do |f| %>パスチップス2 editに関しては上下は同じです
<%= form_for(@comment,:url =>{:action =>"update",:controller => "comments"}) do |f| %> or <%= form_for(@comment) do |f| %>パスチップ3 以下の上下は同じですが、edit_XXXの方は追加情報を加える事が出来ます。
<%= link_to 'Edit', edit_post_comments_path(@post,comment,:abc => "ddddd") %>結果として[@post,@comment]形式はform_forの時つかって、link_to ではroutes.rbで作られる関数をりようすするといいような気がします。
<%= link_to 'Edit', [:edit,@post,comment] %>
railsの場合はレールに乗ったらコードは大変少なくなります。レールに乗りましょう。
レールに乗る為に最近注意している点は以下です。
1.DBと関係なくても出来るだけモデルを作る(理由:検証が簡単に追加出来し、エラー表示部分も連動してくれる)
2.遷移に関してはroutes.rbで作られる関数を利用。url_forでは表現出来ないパスがある
3.深くならない限り、パスのネストを使う(理由:親IDをsession等に覚えている必要が無く、パスだけで関連が想像出来る)
4.リスト表示の部分は出来るだけ部分テンプレートで書く。(理由:検索処理などを直にajax対応出来る)
0 件のコメント:
コメントを投稿