Метод контроллера - это на самом деле метод класса.Это не требует представления.Я сделал его закрытым методом, метод недоступен за пределами класса или других классов, унаследованных от него, и поэтому он правильно недоступен для представления.Ваша проблема предполагает, что ваш пользователь не вошел в систему или что-то еще не так.У вас есть метод require_user?
#application_controller
private
def require_user
unless current_user
store_location
flash[:notice] = t(:must_be_logged_in)
redirect_to user_login_path
return false
end
end
def store_location
session[:return_to] = request.request_uri
end
#user.rb
has_many :images
#image.rb
belongs_to :user
# image_controller.rb
before_filter :require_user
def create
@photo = @item.images.new(:photo => params[:photo], :user => current_user)
Редактировать:
Ваш метод current_user - это метод ApplicationController, который уже унаследован:
ImageStacksController < ApplicationController
This:
helper_method :current_user_session, :current_user
предоставляет методы для представления.
Разница между действием загрузки и всеми остальными обновлениями вызывается с помощью javascript.Я помню, как делал похожий загрузчик и должен был передать маркер подлинности.О чем-либо еще сообщается в журнале?
Это может быть полезно для вас: http://github.com/JimNeath/swfupload---paperclip-example-app
Предоставление токену подлинности, доступному для js, выглядит примерно так:
- content_for :head do
= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery?
Теперь вы добавляете поле для swflupload так же, как вы добавили current_user.