2015年3月22日 星期日

rails_0318

頁面框架與分頁設定


$ rails g scaffold namecard name:string tel:integer address:string company:string
$ rake db:migrate
$ rails server -p $PORT -b $IP


Gemfile.rb
#下載頁面套件
gem 'bootstrap-sass', '~> 3.3.4'
#下載分頁套件
gem 'kaminari'
gem 'bootstrap-kaminari-views'



bootstrop頁面
在各檔案下,加上設定
/app/assets/stylesheets/application.scss
@import "bootstrap-sprockets";
@import "bootstrap";

/app/assets/javascripts/application.js
//= require bootstrap-sprockets

/app/views/layouts/application.html.erb
<div class="container">
  <%= yield %>
</div>

/app/views/namecards/index.html.erb
<table class='table table-hover'>
<%= link_to 'New', new_namecard_path, class:'btn btn-success btn-lg/xs' %>
設定button樣式
btn-success:底色為綠
btn-lg/xs:button大/小


新增一個欄位,email
$ rails g migration add_email_to_namecard

/db/migrate (add_email_to_namecard)
add_column :namecards, :email, :string, limit:100

存檔
$ rake db:migrate

剛新增的欄位,只有資料庫有,在html上,是不會出現的,所以要改。
/app/views/_form.html.erb
輸入頁要加
<div class="field">
    <%= f.label :email %><br>
    <%= f.text_field :email %>
</div>

/app/views/index.html.erb
首頁要加
<th>email</th>
<td><%= namecard.email %></td>

/app/views/show.html.erb
顯示頁要加
<p>
  <strong>Email:</strong>
  <%= @namecard.email %>
</p>

在views下面加完後,頁面上可以看到這個欄位,但是新增資料後,依然無法看到資料,因為必須還要設定controller。

/app/controllers/namecards_controller.rb
這邊加上:email後,在頁面上才可以看到資料。
def namecard_params
  params.require(:namecard).permit(:name, :tel, :address, :company, :email)
end



Kaminari分頁
在controller中改寫.page(params[:page]).per(3)就可以套用
/app/controllers/namecards_controller.rb
def index
  @namecards = Namecard.page(params[:page]).per(3)
end

增加分頁按鈕,並美化
/app/views/index.html.erb
<%= paginate @namecards, :theme => 'twitter-bootstrap-3' %>


render partical
render 'form'=>_form.html.erb

沒有留言:

張貼留言