【问题标题】:Using link_to to write a value to an attribute使用 link_to 将值写入属性
【发布时间】:2018-04-28 00:13:56
【问题描述】:

我有一个 PO(采购订单)模型,它的属性之一是状态。我正在尝试编写一个 link_to,它将值“关闭”写入当前打开的 PO 的状态。

show.html.erb

<%= link_to 'Close PO', {:action => :update, :method => :patch, :id => @po.id, :status => 'closed'} %>

到目前为止,这不起作用,因为该链接将我带回到 PO 显示视图,并且当前 PO 的状态保持“打开”状态。我做错了什么?

【问题讨论】:

    标签: ruby-on-rails link-to


    【解决方案1】:

    我认为您的 link_to 看起来更像:

    <%= link_to 'Close PO', po_path(@po, po: {status: :closed}), method: :patch %>
    

    这自然假设您的routes.rb 包括:

    resources: :pos
    

    【讨论】:

    • 这个模型叫做 po,所以我已经修改了你提出的代码。但它报告了一个 SyntaxError: /app/views/pos/show.html.erb:67: syntax error, unexpected tLABEL, expecting ')' ...h(@po, status: :closed) method: :patch ); @output_buffer.safe... ... ^
    • 抱歉,在右括号后加逗号(更新后的答案)。
    • 越来越近,但现在:参数丢失或值为空:po
    • 我的 po 控制器有这个:def po_params params.require(:po).permit(:date, :vendor_id, :note, :is_recurring, :status) end
    • 感谢您的帮助!那行得通!最终工作代码如下:
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多