У меня есть это в сообщении класса (который является классом модели)
accept_nested_attributes_for mount_uploader: message_pictures,
PictureUploader
пока в классе message_controller у меня есть
def new
@message = current_user.messages.build if logged_in?
@message.message_pictures.build
@reciever = User.find_by(params[:id])
end
def create
@message = current_user.messages.build(message_params)
if @message.save
# Try saving the pictures
flash[:success] = "Message sent"
redirect_to messages_path
else
flash.now[:danger] = "Message not sent"
render 'new'
end
end
и приватный метод message_params (все еще в message_controller)
private
def message_params
params.require(:message).permit(:content, :receiver, :sender,
:archive, message_pictures_attributes: [:msg_img_url, :message_id])#, message_pictures_attributes:[:msg_img_url, :message_id]
end
находясь в режиме просмотра сообщений, я сделал это.
<h1>Compose a new message</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@message, html: { multipart: true }) do |f| %>
<%= render 'shared/error_messages', object: @message %>
<%= f.label :content %>
<%= f.hidden_field :receiver, value: @reciever %>
<%= f.hidden_field :sender, value: current_user.id %>
<%= f.text_area :content, size:"20x15" %>
<%= f.submit "Send message", class: "btn btn-primary" %>
<span class="message_pictures">
<%= f.fields_for :message_pictures do |mp| %>
<%= mp.file_field :msg_img_url, accept: 'image/jpeg,image/gif,image/png' %>
<% end %>
</span>
<% end %>
<%= button_to "Save message", archive_messages_path %>
<script type="text/javascript">
$('#message_picture').bind('change', function() {
var size_in_megabytes = this.files[0].size/1024/1024;
if (size_in_megabytes > 1) {
alert('Maximum file size is 1MB. Please choose a smaller file.');
}
});
</script>
<p>Want to go back to inbox? <%= link_to "Inbox", messages_path %></p> Or
<p>Want to go back to the home page? <%= link_to "Home", root_path, class: "btn btn-lg btn-primary" %></p>
</div>
</div>
Без использования Carrierwave, он работает отлично, и это ошибка, которую он выдал
ArgumentError в MessagesController # new
Не найдено ассоциации для имени `remote_message_pictures_url = '. Это уже определено?
Указывает на строку 5 в классе модели, который является
accept_nested_attributes_for mount_uploader: сообщения_картины, PictureUploader