【问题标题】:How to send extra parameters on a link/button_to_remote call?如何在 link/button_to_remote 调用中发送额外参数?
【发布时间】:2009-05-11 01:32:46
【问题描述】:

Prototype 的 Ajax 接受一个名为“parameters”的参数,该参数带有一个散列数组作为参数 (prototype doc),它会自动作为 GET 或 POST 变量发送,但我找不到如何使用 Rails button_to_remote 将项目添加到该数组方法。

我可以将参数添加到发送给该方法的 URL 中,但这感觉很糟糕。有没有更好的解决方案?

【问题讨论】:

    标签: ruby-on-rails ajax prototypejs


    【解决方案1】:

    我真的找到了解决方案!您可以使用 :with 选项在函数中传递参数,如下所示:

    <%=button_to_remote "+3", {:url =>task_path(@project, @story, task), :with=>"'actual=3'"}%>
    

    诀窍在于 :with 的值是一个 javascript 表达式,它应该以 URL 格式返回一个键值对,例如“key=value”。这就是为什么在上面相同的值周围有额外的引号。

    如有必要,也可以使用函数从页面中提取信息:

    :with=>"getValuesForPostbackFunction()" 
    

    函数将在表单提交之前进行评估。

    【讨论】:

      【解决方案2】:

      使用button_to_remote 将参数发送到下一个操作的唯一方法是将它们放入URI。

      button_to_remote 旨在作为link_to_remote 的功能等效项,它也没有其他添加参数的方法。

      如果您需要更细粒度的控制,则需要构建完整的表单并将其提交给您的操作。

      【讨论】:

      • 我实际上找到了一种传递额外参数的方法,请查看我对我的问题的回答!
      【解决方案3】:

      在您调用 button_to_remote 的表单中添加隐藏的输入字段。

      <input type="hidden" name="name" value="myValue">
      

      【讨论】:

      • 感谢回复,但是没有办法在表单中添加输入标签,因为没有表单。 button_to_remote 创建一个原型 Ajax 对象,没有表单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      相关资源
      最近更新 更多