Как добавить параметры в url_for?

Я вызываю этот фрагмент кода в представлении приложения 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, но не нашел ничего работающего.

Можно ли это сделать? Глобальная переменная - грязное решение, но это то, что у меня есть временно.


person naveed    schedule 08.03.2012    source источник


Ответы (2)


передавать данные в виде строки, а не символа

"data-url" => "your data"

person Mild Fuzz    schedule 08.03.2012
comment
Это работает для одного параметра, но после '&' ничего не принимается, например: ‹% durl = /custs/progress_line_chart/5?end=123&start=456 %› У меня что-то есть в params[:end ] но params[:start] равен нулю, с помощью params.inspect я вижу: {action=›progress_line_chart, end=›123, id=›5, controller=›custs, FCTime=›684} - person naveed; 08.03.2012
comment
Чтобы добавить - проблема заключалась в кодировании URL-адреса, как только это было сделано, я мог передать несколько параметров, следующая проблема, которая возникла, заключалась в том, что любой параметр времени, который я пытался передать, нарушал URL-адрес по неизвестным мне причинам. кодировка ':' в %3A приводит к тому, что мой URL-адрес продолжает ломаться, раздражает, но этого можно избежать, используя настраиваемый формат времени. - person naveed; 08.03.2012

Не уверен, что понимаю вопрос, так как вы можете указать любые параметры, которые хотите url_for:

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

Он добавит нераспознанные компоненты пути в виде строки запроса.

person Andrew France    schedule 13.03.2012
comment
Это правильно, но я думаю, что проблема связана с функцией setDataUrl(), которая, похоже, удаляет все после «&» в строке запроса. Так что я могу передать один параметр и не более. Я думаю, что проблема связана с кодированием и правильным экранированием символов. Кажется, я использовал CGI.escape - person naveed; 13.03.2012