2013-03-05 79 views
0

有無論如何,我可以修改默認「顯示」的行爲?Rails - 修改/複製默認「顯示」

目前,當用戶點擊一個按鈕的主要場所

<%= link_to "ADD TO CART", product, {:class => "btn btn-primary", :target => '_blank', :method => "get"} %> 

用戶將被自動重定向到一個頁面相應的信息。

現在我正在嘗試創建一個稍微不同的頁面(移動設備友好),並創建了一個可直接訪問它的mobile_show頁面。

我的問題是,我應該如何修改link_to以便它指向/mobile/products/id而不是當前的products/id

更新(額外的信息):

在products_controller.rb`

# GET /mobile 
    # GET /mobile.json 
    def mobile 
    @products = Product.current 

    respond_to do |format| 
     format.html # mobile.html.erb 
     #format.json { render json: @products } 
    end 
    end` 

    # GET /mobile/products/1 
    # GET /mobile/products/1.json 
    def mobile_show 
    @product = Product.find(params[:id]) 
    @product.update_attribute(:is_active, false) 

    respond_to do |format| 
     format.html # mobile_show.html.erb 
     #format.json { render json: @product } 
    end 
    end 

在routes.rb中

match '/mobile' => 'products#mobile' 
    match '/cashback' => 'products#cashback' 
    match '/mobile/products/:id' => 'products#mobile_show' 

P/S:我很新的軌道和網絡 - 一般開發

+0

,實際上取決於你的路線。你是如何添加對'/ mobile'命名空間的支持的? – jvnill 2013-03-05 06:41:40

+0

@jvnill不太確定你的意思,但我更新了主帖。 – rlhh 2013-03-05 06:48:19

回答

0

你應該真正創建一個命名空間或控制器專爲移動所以它不會破壞REST 如

應用程序/控制器/移動/ products_controller.rb

應用程序/控制器/ mobile_products_controller.rb

但要使用您的方法,您可能需要爲您的路線添加名稱,以便您可以使用它

match '/mobile' => 'products#mobile', :as => "mobile" 

然後改變你的

<%= link_to "ADD TO CART", mobile_path, {:class => "btn btn-primary", :target => '_blank', :method => "get"} %> 
0

根據您現有的路線,您可以將您的路線改爲

match '/mobile/products/:id' => 'products#mobile_show', as: :mobile_product 

那麼在你看來

<%= link_to "ADD TO CART", mobile_product_path(product), {:class => "btn btn-primary", :target => '_blank', :method => "get"} %> 

UPDATE:這是很好的做法?

這實際上取決於你想達到的目標。如果你想爲你的應用創建一個移動版本,我建議你看看一個響應式用戶界面。如果這是不可能的,處理這個問題的正確方法是創建一組不同的控制器來處理移動請求。 這些控制器應放置在不同的命名空間下。

namespace :mobile do 
    resources :products 
end 

這會期待你有一個app/controllers/mobile/products_controller.rb並在這裏處理移動請求。

+0

謝謝,這工作。但是,這是做到這一點的正確方法嗎? (好/普遍接受) – rlhh 2013-03-05 07:00:51

+0

看看我更新的答案。 – jvnill 2013-03-05 07:12:09