Как я могу перейти к Ruby obj для Javascript? - PullRequest
0 голосов
/ 08 января 2010

У меня есть это для вызова Choose_Category:

{: action =>: choose_category,: id => category} do%>

И у меня есть этот метод для вызова choose_category.js.rjs:

  def choose_category
    begin
      category               = Category.find(params[:id]) 
    rescue 
      ActiveRecord::RecordNotFound
      logger.error("Attempt to access invalid product #{params[:id]}") 
      # flash[:notice]      = "Invalid product" 
      redirect_to :action   => :index
    else
      respond_to { |format| format.js }    
      # redirect_to_index
    end
  end

Я хочу перезвонить названию категории, как я могу это сделать? Я пытаюсь это сделать, но мне ничего не возвращается.

page.alert(@category.name)

Ответы [ 3 ]

2 голосов
/ 08 января 2010

Ваша проблема в том, что @category не определена в вашем шаблоне RJS.

Файлы RJS по сути являются представлениями, которые генерируют Javascript. Как и представления, они имеют доступ к переменным экземпляра, установленным в контроллере, но не к локальным переменным.

Поместите это в начало раздела вашего действия, чтобы решить вашу проблему.

@category               = Category.find(params[:id])
0 голосов
/ 08 января 2010

Если вы можете написать свой собственный JavaScript, почему бы не использовать метод to_json () Ruby для вывода вашего объекта в JSON во встроенную константу на вашей странице, а затем написать некоторый JavaScript для доступа к этой переменной и манипулировать при необходимости?

0 голосов
/ 08 января 2010

Я не уверен в этом, так как я не очень знаком с js и rjs, но я бы добавил к вашим rjs что-то вроде этого:

category_name = <%= @category.name %>;

, а затем

page.alert(category_name)

или просто:

page.alert(<%= @category.name %>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...