我使用 -
为我的应用添加了资源路径resources :cars
我用脚手架来做这个
然后我更改了路线,以便用户可以使用以下网址编辑汽车 - mydomain.com/CARNAME
match "/:car" =>"cars#edit", :as => :edit_car
match "/:car/thanks" =>"cars#thanks", :as => :thanks
我的编辑操作如下所示 -
def edit
@car = Car.find_by_name(params[:car]) || not_found
end
我的问题是在编辑页面(mydomain.com/CARNAME)呈现这样的表单 -
<form accept-charset="UTF-8" action="/cars/2" class="edit_car" id="edit_car_2" method="post">
我想隐藏我希望它看起来像这样的汽车ID
<form accept-charset="UTF-8" action="/cars/CARNAME" class="edit_car" id="edit_car_CARNAME" method="post">
我的更新操作目前就是这样 -
def update
@car = Car.find(params[:id]) #I'll have to change this to - Car.find_by_name(params[:name])
if @car.update_attributes(params[:car])
format.html { redirect_to(thanks_path(@car.name)) }
else
format.html { render action: "edit" }
end
end
我还希望更新操作重定向回编辑操作(mydomain.com/CARNAME)并继续通过任何验证问题。
答案 0 :(得分:3)
如果你想要的东西比覆盖to_param
更通用,你可以改用FriendlyId。
答案 1 :(得分:0)
尝试覆盖Car模型中的方法to_param
:
class Car
def to_param
self.name
end
end
然后视图应该呈现您期望的URL。