2011/05/30

link_toにブロックを渡す件の続き

昨日の続き。

link_toにブロックを渡すときのaタグ属性値は

こんな感じ。

<%= link_to(url, :target => '_blank') { 〜リンクを貼る文字列とか画像とか〜 } %>

ふむふむふむ

それにしても

SetucoCMSでZendFramework使うときにも思ったんだけど、
こんなにビューヘルパーたくさんあって、
HTMLコーダーのみなさんは問題なくビューを編集できるのかしら???
分業できなくないですかね。

Rails3のlink_toヘルパーで、画像と文字列にリンクを貼る

やりたいこと

<a href="リンク先URL">
<span>文字列</span>
<img src="画像パス" alt="あうあう">
</a>   

普通(?)にlink_toでやると

<%= link_to リンク文字列, リンク先情報 %>
こう?でもこれだと出力は
<a href="リンク先URL">リンク文字列</a>                       
になっちゃう。

これだとタグがエスケープされちゃう

<%= link_to("文字列", リンク先URL) %>
し、imgタグもなんか入れにくい

それlink_toのブロック構文でできるよ

<% link_to "リンク先情報" do %>                                                                                              
  <span>文字列</span> 
  <%= image_tag("画像パス", :alt => 'ほげほげ' %>
<% end %>
出力
<a href="リンク先URL">
  <span>文字列</span>
  <img src="画像パス" alt="ほげほげ">
</a>
できたわーい!

※上記の例だと最初からそのままaタグ書けばいいじゃんって思えるけど
 "リンク先情報"の部分で
 「:controller => 'hoge', :action => 'fuga'」
 とか指定したいのでlink_toを使ってます。image_tagも似たような感じ。

2011/05/28

will_paginateを拡張しようとしたら"uninitialized constant WillPaginate::LinkRenderer"エラー

will_paginateの表示をカスタマイズしたい

will_paginateのページネータで、デフォルトのspanタグではなく
ul>liを使いたかったので、renderer拡張クラスをつくろうとしてみた!

環境

railsのバージョンは3.0.7、will_paginateは3.0.pre2。

継承するクラスがない

ネット上でぐぐってみると

class CustomRenderer < WillPaginate::LinkRenderer   
   ・・・ここで拡張・・・ 
end 

っていう情報がよく見つかるけど、こうしようとすると

uninitialized constant WillPaginate::LinkRenderer

エラーが出ました。あうあう

will_paginateのクラス構造が変わってた(ViewHelpers)

rubyonrails-talkのMLでのやりとりを見ると、

class CustomRenderer < WillPaginate::ViewHelpers::LinkRenderer
   ・・・ここで拡張・・・ 
end 

って感じで、"ViewHelpers"が追加になったみたい!できた!

併せてwill_paginateのデフォルト設定

カスタムrendererを記述する場所はみんなそれぞれの場所に書いてるみたい。
(environment.rbとかapplication.rbとかapp/modelの下とか)
僕はこうしました。

app/helpers/paginate_helper.rb にヘルパーと拡張クラスを追加

# -*- coding: utf-8 -*-                          
module PaginateHelper                          
                                               
  def paginate collection, opts = {}           
    opts[:id] ||= 'pageNav'            
    opts[:previous_label] ||= '前へ'  
    opts[:next_label] ||= '次へ'               
    opts[:class] ||= nil                       
    opts[:renderer] ||= 'PaginateHelper::SetucoPaginateRenderer'
    will_paginate collection, opts             
  end                                          
                                               
  class SetucoPaginateRenderer < WillPaginate::ViewHelpers::LinkRenderer
    〜ここで拡張〜
  end                                          
                                               
end     

ビューで使うとき

<%= paginate @pages %>

すっきり!!

2010/10/16

2010年の日本OSS奨励賞をいただきました

IPAが毎年行っている日本OSS貢献者賞/奨励賞というやつがあり、今年その奨励賞を受賞しました。

受賞理由は、簡単に言うと「コミュニティ活動や勉強会への学生の参加、情報発信を頑張った」ということで、2009年中に電設部のつかだとして勉強会に参加&自分で開催&周りの学生をたくさん誘致したのがよかったね!ということみたいです。情報発信は、ブログとか@ITとかでわいわい書いてました。あとは勉強会で登壇したりとか。中学生から大学生まで揃ってOSCで勉強会に
関するセミナーしてみたりとか。発表したものはSlideShareにタメてみたりとか。

でも、勉強会に参加して学生層/若い層に輪を広げたことが評価されるというなら、それの原動力になった各勉強会の運営者(「この勉強会に友達連れてきたい!」と思っちゃうような場をたくさんいただきました。それに、「参加したらブログに書いて恩返し」ということも学びました)や参加者のみなさん(「この人に会わせたい!」と思う魅力的な人ばかりでした)、電設部やかまってくれた学生のみんなが居たからこその結果なので、去年関わっていただいた全ての方に心から感謝です。全員で受賞した気持ちです。受賞を知ったとき、そう思いました。たくさんの方(数えきれないのでここで列挙はできない)に直接会ってお礼を言いたいです。どうもありがとうございました。

というわけで、今年ももちろん勉強会に参加したり開催したりしておりますし、今はSetucoCMSの開発に注力しております。SetucoCMSも、現在電設部の現役学生と私のようなOBでやっておりますが、学生と一緒にやるということをずっと大事にしていきたいです。

では、今後ともよろしくお願いします。

2010/08/24

zf create project ⇒ Cannot redeclare class PHPUnit_Framework_TestSuite_DataProvider in /usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php

zf create project path

を実行したとき、

Cannot redeclare class PHPUnit_Framework_TestSuite_DataProvider in /usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php

というエラーが発生。
スタックをたどってみると、

/usr/share/php/PHPUnit/Framework.php

の中で大量にphpファイルをrequireしていたので、ファイル内のrequireを全てrequire_onceに置換して解決。

2010/07/25

git rebase -i で編集をミスったとき

git rebase -i で過去のコミットを編集、まとめたりするとき、
途中で操作をミスると再度 git rebase -i を実行しようとしても

"Interactive rebase already started"

と出ることがある。
このときは一度

$ git rebase --abort

を実行して、「今のrebase無しよ」としてから
再度git rebase -i を実行すれば上手くいく。

2010/06/02

Hello, world.

I had written the blog in the title "[Susume] of school IT study meeting" before. My name is [tsukadaakihiro]. It is shifting gradually to akitsukada though I had acted by the pen name named atcorp before.

The place of employment is domestic SIer, and I am employed as SE apprenticeship. Even if it is private, the programming is done. The programming is a hobby.

The CMS development project of open source named SetucoCMS is started up with the classmate, the junior, and the senior in the school days now. A real activity has not started yet though the page of the project is made in SourceForge. The future is the enjoyment.

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification