Rails .js.erb文件中的实例变量

时间:2016-05-16 09:43:36

标签: javascript ruby-on-rails

我有这样的控制器动作。 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元素。什么是正确的语法?

1 个答案:

答案 0 :(得分:2)

@city会为您提供ActiveRecord::Base课程的实例,我认为这是您在.js.erb文件中所期望的。您可能想要与该实例相关的属性,如idname,您可以通过编写以下代码来实现:

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