Rails, как я могу передать коллекцию в частичное представление, которое отображается из файла * .js.erb - PullRequest
1 голос
/ 25 октября 2011

Когда я делаю это в моем update.js.erb из RewardsController:

$('div#rewards_list').html("<%=
  escape_javascript(render :partial    => 'shared/rewards',
                           :collection => @rewards,
                           :as => reward,
                           :locals => { :user => @user }
                   )
%>");

Но в журнале написано:

ActionView::Template::Error (undefined local variable or method `reward' for
  #<#<Class:0xbb395d8>:0xbb3774c>):

В моем методе действия «обновление»:

def update
  @user   = User.find(params[:user_id])
  @reward = @user.rewards.find(params[:id])

  respond_to do |format|
    if @reward.update_attributes(params[:reward])
      @rewards = @user.rewards

      format.html { redirect_to @user }
      format.js
    else
      flash[:error] = "There is an error while updating the reward, please try again!"

      format.html { redirect_to @user }
    end
  end
end

1 Ответ

2 голосов
/ 25 октября 2011

Опция :as должна содержать символ, а не переменную (и особенно не переменную, которая не существует), возможно, вы имеете в виду следующее:

$('div#rewards_list').html("<%= escape_javascript(render :partial => 'shared/rewards', :collection => @rewards, :as => :reward, :locals => {:user => @user}) %>");

Я только что изменил :as => rewardдо :as => :reward.Подробнее см. Руководство Макеты и рендеринг в Rails .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...