所以我一直在努力想要了解我可以用Rails中的link_to做些什么。我发现的一些东西是旧的,有些是新的,有些是与我所拥有的非常不同。具体来说,我试图在视图中有两个链接。一个是“加1”,一个是“减1”。当我到达控制器时,我想根据使用的链接从我的模型中添加或减去一个。以下是链接:
<%= link_to "Add 1", item, method: :put, title: item.name %>
<%= link_to "Minus 1", item, method: :put, title: item.name %>
我的控制器(项目控制器)方法是:
def update
@item = current_user.item.find(params[:id])
@item.quantity += #+1 or -1 depending on what is passed
if @item.save
flash[:success] = "Item updated."
end
redirect_to current_user
end
因为我用一个来调用link_to:put我不太清楚如何区分哪个:put是哪个,因为两个链接除链接名称外都是相同的。我想我正在使用title: item.name
参数识别特定项目。是仅通过item
路径识别出来的吗?我应该将“:title”更改为“+1”还是“-1”?我真的很感激澄清,因为这让我感到困惑。我还注意到在文档“html options”vs“url options”中,但我无法破译这些差异?谢谢!
答案 0 :(得分:2)
您可以在网址中传递其他参数:
<%= link_to "Add 1", item_path(item, perform: 'add'), method: :put %>
<%= link_to "Sub 1", item_path(item, perform: 'sub'), method: :put %>
def update
@item = current_user.item.find(params[:id])
params[:perform] == 'sub' ? @item.quantity -= 1 : @item.quantity += 1
if @item.save
flash[:success] = "Item updated."
end
redirect_to current_user
end
或者可以向item resource
添加成员操作:
resources :items do
member do
put 'sub'
put 'add'
end
end
link_to "Add 1", [:add, item], method: :put
link_to "Sub 1", [:sub, item], method: :put