2010-02-17 1 views
3

Есть ли способ передать параметры с помощью link_to вызова без его появления на URL? Я делаю простую систему рейтинга звезд, и я в основном делаю каждую звезду ссылкой изображения, которая передает свое значение в качестве параметра для нового рендеринга той же страницы. Код помощника выглядит так:Как передать скрытые параметры в "link_to"

def stars_generator(edit_mode = false) 

@rating = params[:stars].to_i #takes rating from page param, so :star must be defined first! 

@stars = Array.new(5) {|i| i+1} #change array size for more stars 
output = "<div class = 'star_container'>" 

case edit_mode #checks whether to display static stars or clickable stars 
when true 
    @stars.each do |star| #this block generates empty or colored stars depending the value of @rating and the position of the star evaluated 
    if star <= @rating 
     output += link_to image_tag('star_rated.png', :mouseover => 'star_hover.png'), review_new_url(:stars => star) 
    else 
     output += link_to image_tag('star_empty.png', :mouseover => 'star_hover.png'), review_new_url(:stars => star) 
    end 
    end 
when false #static stars are displayed if edit_mode is false 
    @stars.each do |star| 
    if star <= @rating 
     output += image_tag('star_rated.png') 
    else 
     output += image_tag('star_empty.png') 
    end 
    end 
end 

output += "</div>" 
return output 
end 

Он отлично работает, но в настоящее время рейтинг звезд отображается в качестве параметра в URL-адресе. В идеале я хотел бы как-то скрыть эту информацию, и я попробовал как hidden_field_tag, так и hidden_tag, ни один из которых не работает. Нет ли способа сделать это, или я просто полностью нуб?

ответ

0

вы можете попробовать

link_to image_tag('star_rated.png', :mouseover => 'star_hover.png'), review_new_url(:stars => star), :method => :post 

это будет динамически вводить JavaScripts, чтобы превратить ссылки в форму и представить параметры путем размещения

надежду, что помогает =)

+0

Хм, добавив: метод =>: post ничего не сделал для меня, но у меня нет javascript в проекте. Есть ли способ сделать это без js? – funkymunky

+0

единственный способ получить данные на веб-сервере без его отображения URL-адреса - это отправить POST-форму. Если у вас нет фреймворков javascript для использования rails, тогда 'method:: post' не будет работать, и вам придется создать стандартную форму, которая отправляет скрытые поля при отправке. У вас может быть изображение как кнопка формы – maniacalrobot

Смежные вопросы