【问题标题】:How to add parameters to url_for?如何向 url_for 添加参数?
【发布时间】:2012-03-08 17:26:14
【问题描述】:

我在 Rails 2.3 应用程序视图中调用这段代码来呈现 FusionChart:

<div id="cust_progress"></div>
<script type="text/javascript">
  var activity = new FusionCharts("/flash/MSLine.swf", "chart1Id", "600", "450", "0", "1");
  activity.setDataURL("<%=url_for(:controller=>'custs',:action=>'progress_line_chart', :id=>params[:id])%>");
  activity.render("cust_progress");
</script>

在调用此代码的范围内,我还有一些其他参数需要传递给数据 url。我无法找到任何方法将这些参数放入我的 progress_line_chart 控制器操作中。

我相信 url_for 方法不允许您传递更多参数,所以我有点不知所措,我尝试了其他一些 URL 创建方法,但没有找到任何有效的方法.

这可以吗?全局变量是一个肮脏的解决方案,但它是我暂时拥有的。

【问题讨论】:

    标签: javascript ruby-on-rails ruby fusioncharts


    【解决方案1】:

    将数据作为字符串而不是符号传递

    "data-url" =&gt; "your data"

    【讨论】:

    • 这适用于单个参数,但在 '&' 之后似乎没有任何内容,例如: 我在 params[:end] 中有一些东西,但是 params[:start] 是 nil,使用 params.inspect 我看到:{"action"=>"progress_line_chart", "end"=>"123", "id"= >"5", "控制器"=>"custs", "FCTime"=>"684"}
    • 添加 - 问题是对 URL 进行编码,一旦完成,我可以传递多个参数,弹出的下一个问题是我尝试传递的任何时间参数都会破坏 URL,原因是我不知道编码到 %3A 中的 ':' 会导致我的 URL 继续中断,这很烦人,但可以通过使用自定义时间格式来避免。
    【解决方案2】:

    不确定我是否理解这个问题,因为您可以指定任何您喜欢的参数 url_for:

    url_for(:controller => 'custs', :action => 'progress_line_chart',
            :id => params[:id], :some => "other", :data => "goes", :here => true)
    

    它将无法识别的路径组件附加为查询字符串。

    【讨论】:

    • 没错,但我认为问题出在 setDataUrl() 函数上,它似乎删除了查询字符串中“&”之后的所有内容。所以我可以传递一个参数而不再传递。我认为问题与正确编码和转义字符有关。我相信我用过 CGI.escape
    猜你喜欢
    • 2012-07-16
    • 2020-07-09
    • 2014-08-07
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多