我有这样的控制器动作。 itineraries_controller.rb
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
元素。什么是正确的语法?
答案 0 :(得分:2)
@city
会为您提供ActiveRecord::Base
课程的实例,我认为这是您在.js.erb文件中所期望的。您可能想要与该实例相关的属性,如id
或name
,您可以通过编写以下代码来实现:
a = $('a.cityCrossBtn[for='+"<%= @city.id %>"+']')