{"id":4225,"date":"2010-04-06T03:07:08","date_gmt":"2010-04-05T19:07:08","guid":{"rendered":"http:\/\/ihower.tw\/blog\/?p=4225"},"modified":"2011-04-09T01:52:34","modified_gmt":"2011-04-08T17:52:34","slug":"rails3-helper-with-block","status":"publish","type":"post","link":"https:\/\/ihower.tw\/blog\/4225-rails3-helper-with-block","title":{"rendered":"Rails3 \u5982\u4f55\u5beb Helper \u53ef\u4ee5\u50b3 Block \u53c3\u6578"},"content":{"rendered":"<p> Rails3 <a href=\"http:\/\/weblog.rubyonrails.org\/2010\/4\/1\/rails-3-0-second-beta-release\">beta2<\/a> \u958b\u59cb\u78ba\u5b9a\u65b0\u7684 &lt;%= %> \u7684\u7528\u6cd5\u4e86\uff0c\u50cf\u662f form_for, div_for \u7b49\u8981\u6539\u6210  &lt;%= %> \u800c\u4e0d\u662f\u6211\u5011\u7fd2\u6163\u5df2\u4e45\u7684  &lt;% %>\uff0c\u4e3b\u8981\u662f\u56e0\u70ba\u9019\u6a23\u7d71\u4e00\u4e86 &lt;%= %> \u5c31\u8868\u793a\u5167\u5bb9\u6703\u8f38\u51fa\u7684\u6163\u4f8b\u3002\u76ee\u524d\u662f\u5169\u7a2e\u5beb\u6cd5\u90fd\u53ef\u4ee5\uff0c\u53ea\u662f\u672c\u4f86\u7684\u5beb\u6cd5\u6703\u6709\u8b66\u544a\u8a0a\u606f DEPRECATION WARNING: &lt;% %> style block helpers are deprecated. Please use &lt;%= %>\uff0c\u61c9\u8a72\u5230 Rails 3.1 \u5c31\u6703\u6b63\u5f0f\u79fb\u9664\u3002\u7528\u6cd5\u53ef\u4ee5\u53c3\u8003 <a href=\"http:\/\/asciicasts.com\/episodes\/208-erb-blocks-in-rails-3\">ERB Blocks in Rails 3<\/a> \u4e00\u6587\u3002<\/p>\n<p>\u800c\u6211\u9019\u7bc7\u63a5\u4e0b\u4f86\u8981\u793a\u7bc4\u7684\u662f\uff0c\u5982\u679c\u6211\u5011\u60f3\u8981\u81ea\u5df1\u5beb\u4e00\u500b helper\uff0c\u53ef\u4ee5\u63a5\u53d7 block \u53c3\u6578\u8981\u600e\u9ebc\u5beb? \u4f8b\u5982\u5728 ERB \u4e2d\uff0c\u6211\u5011\u5e0c\u671b\u9019\u6a23\u7684\u7a0b\u5f0f\u53ef\u4ee5\u8f38\u51fa header blah footer \u5b57\u4e32\uff1a<\/p>\n<pre>\r\n<code>\r\n# Rails2\r\n&lt;% my_helper do %>\r\n    blah\r\n&lt;% end %>\r\n<\/code>\r\n<\/pre>\n<p>\u5728 Rails2 \u7684\u8a71\uff0c\u5982\u679c\u6709\u5305 Block \u7121\u8ad6\u5982\u4f55\u90fd\u5fc5\u9808\u7528 &lt;% \u800c\u4e0d\u80fd\u7528 &lt;%=\uff0c\u4e0d\u7136\u4e00\u5b9a\u6703\u6709\u932f\u8aa4\u8a0a\u606f\u3002\u800c\u9019\u500b helper \u6700\u5e38\u5beb\u6210\u9019\u6a23:<\/p>\n<pre>\r\n<code>\r\n# Rails2\r\ndef my_helper\r\n  concat(\"header\")\r\n  yield\r\n  concat(\"footer\")\r\nend\r\n<\/code>\r\n<\/pre>\n<p>\u6216\u662f:<\/p>\n<pre>\r\n<code>\r\n# Rails2\r\ndef my_helper(&block)\r\n   tmp = with_output_buffer(&block) \r\n   concat(\"header #{tmp} footer\")\r\nend\r\n<\/code>\r\n<\/pre>\n<p>\u5728 Rails2 \u4e2d\uff0c\u6211\u5011\u5f97\u7528 concat \u8868\u793a\u8f38\u51fa\u5230 ERB (\u9019\u7b97\u662f\u4e00\u500b\u5bc6\u62db\uff0c\u6c92\u4eba\u6559\u9084\u771f\u7684\u4e0d\u6703)\u3002\u4f46\u662f\u5728 Rails3\uff0c\u5247\u88ab\u6539\u6210\u6bd4\u8f03\u76f4\u89ba\u7684:<\/p>\n<pre>\r\n<code>\r\n# Rails3\r\n&lt;%= my_helper do %>\r\n  blah\r\n&lt;% end %>\r\n<\/pre>\n<p><\/code><\/p>\n<p> \u4ee5\u53ca<\/p>\n<pre>\r\n<code>\r\n# Rails3\r\ndef my_helper(&block)\r\n  tmp = with_output_buffer(&block) \r\n  \"header #{tmp} footer\"\r\nend\r\n<\/code>\r\n<\/pre>\n<p>\u5728 Rails3 \u5c31\u4e0d\u9700\u8981\u7528 concat \u4e86\uff0chelper \u7684\u56de\u50b3\u503c\u900f\u904e &lt;%= \u5c31\u6703\u8f38\u51fa\u5728 ERB \u4e0a\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rails3 beta2 \u958b\u59cb\u78ba\u5b9a\u65b0\u7684 &lt;%= %> \u7684\u7528\u6cd5\u4e86\uff0c\u50cf\u662f form_for, div_for &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/ihower.tw\/blog\/4225-rails3-helper-with-block\" class=\"more-link\">\u95b1\u8b80\u5168\u6587<span class=\"screen-reader-text\">\u3008Rails3 \u5982\u4f55\u5beb Helper \u53ef\u4ee5\u50b3 Block \u53c3\u6578\u3009<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[53],"tags":[],"class_list":["post-4225","post","type-post","status-publish","format-standard","hentry","category-rails","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1q6tG-169","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts\/4225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/comments?post=4225"}],"version-history":[{"count":23,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts\/4225\/revisions"}],"predecessor-version":[{"id":5523,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/posts\/4225\/revisions\/5523"}],"wp:attachment":[{"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/media?parent=4225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/categories?post=4225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ihower.tw\/blog\/wp-json\/wp\/v2\/tags?post=4225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}