2014-10-29 4 views
0

У меня есть тег span, который обновляется javascript. Поэтому, на мой взгляд, этот код будет отображаться номер:Ruby on Rails - обновить тег span по javascript в link_to

<span id="actual_nbr"></span> # Show the number via javascript 

Javascript выглядит следующим образом:

document.getElementById("actual_nbr").innerHTML = 1; 

Теперь я хочу использовать это значение в link_to для создания объекта:

<%= link_to "OK", { :action => "create", :nbr => content_tag(:span, 'actual_nbr') }, :confirm => "Are you sure?", :method => :create %> 

Если я осмотреть мой элемент я получаю:

<a confirm="Are you sure?" data-method="create" href="/purchases?nbr=%3Cspan%3Eactual_nbr%3C%2Fspan%3E" rel="nofollow">OK</a> 

И это возвращает меня ошибку, потому что продолжительность тега рассматривается как текст не HTML тег:

{"_method"=>"create", 
"authenticity_token"=>"7CC6I1HrmFZcT2Qrkriafago1ZGhizX4cJL+FaSyRkw=", 
"nbr"=>"<span>actual_nbr</span>"} 

Что такое лучший способ сделать то, что я пытаюсь сделать?

Благодаря

ответ

0

Я использовал Ajax для решения моя проблема.

В моей JavaScript:

function submitForm() { 
     $.ajax({ 
      type:'POST', 
      url: '/purchases', 
      data: $.param({ purchase: {id: variable_id, nbr: variable_nbr }}) 
     }); 
} 

На мой взгляд:

<button type="button" onclick="submitForm()">Send data</button> 

В мой контроллер:

def create 
     Rails.logger.debug "***************************************" 
     Rails.logger.debug params 
     Rails.logger.debug "***************************************" 
     @purchase = current_user.purchases.create(purchase_params) 
     if @purchase.save 
      redirect_to @purchase.paypal_url(user_path(current_user), purchase_params[:id], purchase_params[:nbr]) 
     else 
      redirect_to(root_url) 
     end 
    end 

Я также использовал покупки. создать вместо покупок.

0

рубин на стороне сервера и не может просматривать результат того, что делает JavaScript на стороне клиента, так что вы не можете сделать это без какой-либо помощи JavaScript. Я хотел бы предложить добавить идентификатор к вашему элементу из Rails, таких как
id: "purchaseIt"
и добавить атрибут данных HTML5 на ваш якорь:
data-nbr="nojs"
затем обновить элемент из JavaScript, что вам нужно: document.getElementById('purchaseIt').setAttribute('data-nbr','1');

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