rails 4学「railsを応用してweb敏捷開発第4版」で出会う問題
前言
Railsは2013年6月末にRails 4を発表した.しかし、市販されている最高のrails教材「railsを応用してweb敏捷開発を行う」はrails 3を対象としている.チュートリアルに従って構成すると、システムのデフォルトインストールrailsはrails 4に直接変わります.0になりました.もちろんrvmでもrails 3を簡単に作ることができます.0の環境.でもrails 4が出てきた以上、なぜ体験しないのか・・・
ここでRails 4を用いて本の前のステップに従ってアプリケーションを作成する場合に発生する可能性のあるいくつかの問題と解決方法を共有します.
レイアウトはすべて本の章数に基づいて記述されている.
第二章
2.1アプリケーションの新規作成
Page11
もとの命令
問題があるかもしれません:GFW内で生活しているので、科学的なインターネットの手段がなければ、あるいはネットがよくなければ、この一歩は遅くなります.ここではbundleのステップをスキップすることをお勧めします.
Page12
サーバの起動
rails 3は最初から多くのキーワードを簡略化しているようですが、よく使われる略語をいくつか挙げてみましょう.
第十一章Ajax初体験
P103
質問:create.js.rjs
rails 4はrjsを完全に捨てたので、本に従って以下のコードを使うのは、少しも役に立たない.
解決策は2つあり,1つはcoffee script,1つはjqueryを用いてdomの操作を行う.
ここではjqueryを用いてこの問題を解決する方法を紹介します.
1.jqueryのインストール
2.new file- create.js.erb
htmlメソッドの後の引用符は二重引用符でなければなりません.そうしないと、後期にテスト例が失敗します.
P 105ハイライト変化
ここでハイライトanimateを使用するため、追加のjquery-pluginサポートが必要です.
1.まずダウンロード Jquery-colorに行き、jquery-color.jsファイルは/app/assets/javascriptsディレクトリの下に配置されます
2.修正前のcreate.js.Erbファイル、highlight変化部分をサポートするコードを追加します.ここで例をあげます.
P 108空きカートを隠す
P 108のhelperメソッドが完了するとjsが失効する場合に遭遇しました.私自身の解決策は、余計なコードを取り除くことです.ローカル最終クラスの削除を推奨cartのunlessコード.
P 111試験Ajax変更
rjsではなくjqueryを使用するため、この部分のテストコードも調整する必要があります.
第12章支払
P120
orders_controllers.rb中原書コードは以下の通りである
rails 4では、書き方を変えるべきで、注意深い学生は足場が生成したcontrollerの中に2つのコードがあることを発見することができます
少しspring MVCの=の中のpreloadの方法.order_が見えますpararmsメソッドは、requestのOrderを返すことと、元のparams[:order]を返すことに違いはありません.だからこの部分は今変更すればいいです.
まとめ
他の問題はすべて問題ではないはずで、基本的に第4版の本を持ってrails 4で入門する問題も大きくありません.何か妖しい問題があったら幻の伝言で討論します.
Railsは2013年6月末にRails 4を発表した.しかし、市販されている最高のrails教材「railsを応用してweb敏捷開発を行う」はrails 3を対象としている.チュートリアルに従って構成すると、システムのデフォルトインストールrailsはrails 4に直接変わります.0になりました.もちろんrvmでもrails 3を簡単に作ることができます.0の環境.でもrails 4が出てきた以上、なぜ体験しないのか・・・
ここでRails 4を用いて本の前のステップに従ってアプリケーションを作成する場合に発生する可能性のあるいくつかの問題と解決方法を共有します.
レイアウトはすべて本の章数に基づいて記述されている.
第二章
2.1アプリケーションの新規作成
Page11
もとの命令
rails new demo
問題があるかもしれません:GFW内で生活しているので、科学的なインターネットの手段がなければ、あるいはネットがよくなければ、この一歩は遅くなります.ここではbundleのステップをスキップすることをお勧めします.
rails new demo --skip-bundle
Page12
サーバの起動
rails server
rails 3は最初から多くのキーワードを簡略化しているようですが、よく使われる略語をいくつか挙げてみましょう.
rails s # start server
rails g # rails generate
rails d # rails destory
第十一章Ajax初体験
P103
質問:create.js.rjs
rails 4はrjsを完全に捨てたので、本に従って以下のコードを使うのは、少しも役に立たない.
page.replace_html('cart',render(@cart))
解決策は2つあり,1つはcoffee script,1つはjqueryを用いてdomの操作を行う.
ここではjqueryを用いてこの問題を解決する方法を紹介します.
1.jqueryのインストール
rails g jquery:install --ui --force
2.new file- create.js.erb
$('#cart').html(" <%= escape_javascript(render(@cart))%> ");
htmlメソッドの後の引用符は二重引用符でなければなりません.そうしないと、後期にテスト例が失敗します.
P 105ハイライト変化
ここでハイライトanimateを使用するため、追加のjquery-pluginサポートが必要です.
1.まずダウンロード Jquery-colorに行き、jquery-color.jsファイルは/app/assets/javascriptsディレクトリの下に配置されます
2.修正前のcreate.js.Erbファイル、highlight変化部分をサポートするコードを追加します.ここで例をあげます.
if($('#cart tr').length==1){$('#cart').show("slow");}
$('#current_item').css({'color':'red'}).animate({'color': "white"});//
P 108空きカートを隠す
P 108のhelperメソッドが完了するとjsが失効する場合に遭遇しました.私自身の解決策は、余計なコードを取り除くことです.ローカル最終クラスの削除を推奨cartのunlessコード.
P 111試験Ajax変更
rjsではなくjqueryを使用するため、この部分のテストコードも調整する必要があります.
test "should create line_item via ajax" do
assert_difference('LineItem.count') do
xhr:post,:create,:product_id=>products(:one).id
end
assert_response :success
assert_select_jquery :html ,"#cart" do
assert_select 'tr#current_item td',/Programming Ruby 1.9/
end
end
第12章支払
P120
orders_controllers.rb中原書コードは以下の通りである
def create
@order =Order.new(params[:order])
###etc###
end
rails 4では、書き方を変えるべきで、注意深い学生は足場が生成したcontrollerの中に2つのコードがあることを発見することができます
before_action :set_order, only: [:show, :edit, :update, :destroy]
def order_params
params.require(:order).permit(:name, :address, :email, :pay_type)
end
少しspring MVCの=の中のpreloadの方法.order_が見えますpararmsメソッドは、requestのOrderを返すことと、元のparams[:order]を返すことに違いはありません.だからこの部分は今変更すればいいです.
# POST /orders
# POST /orders.json
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(current_cart)
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id]=nil
format.html { redirect_to store_url, notice: 'Thanks for your order' }
format.json { render action: 'show', status: :created, location: @order }
else
format.html { render action: 'new' }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
まとめ
他の問題はすべて問題ではないはずで、基本的に第4版の本を持ってrails 4で入門する問題も大きくありません.何か妖しい問題があったら幻の伝言で討論します.