2013-03-05 132 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