2010-07-10 2 views
0

Можно ли использовать рубиновый код в файлах RJS?Rails - можно ли использовать рубиновый код в файлах RJS?

Например, destroy.js.rjs файл

if @template == "viewer" 
    page["viewing_registry_#{@viewer_registry.id}"].replace_html :partial => "shared/request_viewer_link" 
else 
    page["viewer_#{@viewer.id}"].visual_effect :DropOut, :duration => 2.0 
    flash.discard 
end 

Это файл Rjs называемый от уничтожения действия, который имеет

def destroy 
    @viewer = Viewer.find(params[:id]) 
    @viewer_registry = Registry.find(@viewer.registry_id) 
    @viewer.destroy 
    flash[:notice] = "Viewer deleted" 
    @template = params[:template] 
    params[:template] = nil 
    respond_to do |format| 
     format.html { redirect_to registry_path(@viewer_registry) } 
     format.js 
    end 
    end 

Таким образом, с вызовом AJAX, файл RJS используется для ответ, и он дает другой ответ, основанный на том, какой шаблон вызывает действие destroy.

В настоящий момент выполняется вызов AJAX, запись уничтожается, и затем ничего не происходит, независимо от того, какой шаблон вызывал действие destroy. Так что мне интересно, не работает ли это просто потому, что я не могу использовать ruby-код в RJS-файле. Есть идеи? Или я делаю это неправильно?

Спасибо!

ответ

0

Право, я переделал функцию уничтожить так, чтобы он выглядел следующим образом:

def destroy 
    #is this bad because its not linked to current_user? 
    #how would you even set it to be relational to current_user? 
    @viewer = Viewer.find(params[:id]) 
    @viewer_registry = Registry.find(@viewer.registry_id) 
    @viewer.destroy 
    flash[:notice] = "Viewer deleted" 
    respond_to do |format| 
     format.html { redirect_to registry_path(@viewer_registry) } 
     format.js { 
     if params[:template] == "viewer" 
      render :action => "viewer_destroy.js.rjs" 
     else 
      render :action => "destroy.js.rjs" 
     end 
     } 
    end 
    end 

Так что я получил 2 RJS файлы вместо этого, и различные те, которые используются на основе имени входящего шаблона. Yay!

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