Railsでadminとかのnamespaceでくくわれたリソースへアクセスするときのform_forがなんかめんどかったときの対処
どゆことかというと、
config/routes.rb的に、
namespace :admin do resources :users end
ときとかの、newアクションやeditアクションで用いられる、
scaffold的にいうと、_form.html.erb内のform_forメソッドは、
普段は、
form_for(@user) do |f|
とかって感じで、
オブジェクトの指定からさらに新規(create)なのか、
更新(update)なのか判別して、
url(行き先のアクション)までセットしてくれてる訳ですが、
namespaceを使って階層になってると、
form_for(@user, :url=>admin_user_path(@user)) do |f|
とかって、
行き先のアクションを直接指定することもできるけど、
こうすると新規と更新で別のパスを指定する必要が出てきて、
せっかくの_form.html.erb切り出して共通化してたのが、台無し!になるから、
どうしたものかーと思っていたら、
form_for([:admin, @user]) do |f|
って感じで配列で階層を表現できるらしい!
助かりました!
Railsのviewのインラインの中に複数のメソッドが書けた
書けた。
<%= link_to("product1", URI1)+" | "+link_to("product2", URI2) %>
これが、
<a href="URI1">product1</a> | <a href="URI2">product2</a>
って。
既存のヘルパーメソッドとテキスト部分とが織り交ざった独自のヘルパーを作るときに、
力づくでやった方法。
※上でいうRubyインラインタグ内のストリングを返すヘルパーメソッドを作った。
content_tagとか使えばもっときれいそうだけどー。
Railsで別タブ(別ウインドウ)で開かれるリンクを作る方法
<%= link_to "go on to the next page", URL_PATH, :target=>["_blank"] %>
これでおっけー!
こうするとhtml的に、
<a href="xxx.html" target="_blank">go on to the next page</a>
となって、別タブ(別ウインドウ)で開かれます。
Rails 3からHTMLエスケープがデフォルトになったよやったー!でも無効にしたいときもある
コレ。
<%= @user.name.html_safe %>
で、自動のHTMLエスケープを無効化できるって話だったのだけど、
<%= raw @user.name %>
というのもあるらしい。
エスケープの観点でいうと前者のが良いのかしら。。
どっちがいいんだっていう英語のQ&Aサイトはあった。
Mac(Lion)にvim-rubyを入れる
まず、MacのvimがRubyに対応しているか確認する。(たいていしてない。)
vi --version | grep ruby
これで"-ruby"となっていたら対応していない。
そこでまずvimの入れ替えってことで、macportsを利用します。
※もともとmacportsでvimを入れてないとココでないよ!って怒られます。
sudo port clean vim
これできれいにして、
sudo port install vim +multibyte +ruby
これで新しくインストールです。(まあまあ時間かかった。)
そいで今(2011-11-23)だとvim-rubyのパッケージがgemにはないようなので、
git clone http://github.com/vim-ruby/vim-ruby.git
cd vim-ruby
gitで新しいのをとってきて、
git checkout vim7.3
HEADでもタグでもお好みでパージョンを指定して、
rake package
パッケージ作成、
sudo gem install etc/package/vim-ruby-<日付>.gem
etc下にできたパッケージをgemで実行するとインストール!
最後に
vi ~/.vimrc
に
set tabstop=2 set shiftwidth=2 set expandtab set autoindent set nocompatible syntax on filetype on filetype indent on filetype plugin on
とか書いたら、
Ctrl+x,Ctrl+oで補完機能が働きます!
参考にしたページ
ありがとうございます!
Railsのフォームで配列構造を扱いたい!
どうゆうことかというと、
□商品1
□商品2
□商品3
こんなかんじの並列な要素群とそれらのチェックボックスがあって、
複数選択可能なフォームを作る際に、
受け取るパラメータとして、
params = {:products => ["1","3"]}
こういう風にあるシンボルに対する複数要素の配列としたい場合は、
例)
<% @products.each |product| do %> <%= check_box_tag 'products[]', product.id %> <% end %>
って書く!
配列だけでなく、ハッシュもできるし、
チェックボックス以外でももちろん可能。
ありがとうございます!