2016-05-16 4 views
2

У меня есть действие контроллера как это. itineraries_controller.rbРеальные переменные экземпляра в файле .js.erb

def delete_city 
    @new_itinerary = params[:new_itinerary] if params[:new_itinerary].present? 
    @step = params[:step] 
    if @step == 'two' 
    @city = City.find(params[:id]) 
    @delete_rec = true 
    else 
    @city_item = CityItem.find(params[:id]) rescue nil 
    end 
    if @city_item.present? 
    @itinerary = @city_item.country_item.itinerary rescue nil 
    @itinerary = Itinerary.unscoped.find(params[:data_id]) 
    if (@itinerary.present? and @itinerary.user_id == current_user.id) or (current_user.moderator?) 
     @country_item = @city_item.country_item 
     @city_item.destroy 
     @country_item.update_column('city_ids', @country_item.city_items.order(:sequence).pluck(:city_id)) 
     @delete_rec = true 
    end 
    end 
    respond_to do |format| 
    if @delete_rec && @step != 'two' 
     format.js {render 'step_two.js.erb'} 
    elsif @delete_rec && @step == "two" 
     format.js {render 'delete_city_step_2.js.erb'}  
    else 
     format.js {render :text => 'fail'} 
    end 
    end 
end 

И js.erb так:

delete_city_step_2.js.erb

a = $('a.cityCrossBtn[for='+"<%= @city %>"+']') 
li = a.closest('.token-input-token-facebook') 
li.hide(); 

Я не смог найти a элемент. Каков правильный синтаксис?

ответ

2

@city предоставит вам экземпляр класса ActiveRecord::Base, и я думаю, что это то, чего вы не ожидаете в вашем файле .js.erb. Вы можете хотеть атрибут, связанный с этим экземпляром как id или name, и вы можете сделать, что, написав следующий код:

a = $('a.cityCrossBtn[for='+"<%= @city.id %>"+']') 
+0

Он работает. Благодаря тонну! – RamanSM

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