То, что я хотел сделать, это получить
last_insert_id
таблицы и вставьте ее в другую таблицу, но я получаю эту ошибку, делая это таким образом (я не знаю, является ли это правильным способом сделать такие вещи)
ActiveModel :: UnknownAttributeError (неизвестный атрибут 'content' для MessagePicture.): # Копируется из консоли
неизвестный атрибут 'content' для MessagePicture. # Скопировано из браузера и выделено это число
@ message = current_user.messages.build.message_pictures.build (message_params)
Это
новые и создаваемые методы класса Message_controller
def new
@message = current_user.messages.build if logged_in?
@reciever = User.find_by(params[:id])
end
def create
#@msg = Message.new(user_params)
@message = current_user.messages.build.message_pictures.build(message_params)
if @message.save
if @message[:picture].present?
# Send this to the message model for insertion with the @message_id and from the picture model, insert it to the
add_msg_pic(msg = [@message.id,@message[:msg_img_url]])
end
flash[:success] = "Message sent"
redirect_to messages_path
else
flash.now[:danger] = "Message not sent"
render 'new'
end
end
Это
метод message_params
def message_params
params.require(:message).permit(:content, :receiver, :sender, :archive, message_pictures_attributes:[:msg_img_url, :message_id])
end
Это
Класс сообщения (модель) метод add_msg_pic
def add_msg_pic(msg)
msg.message_pictures.each.do |m|
m.message.id = nil
message_pictures << m
end
This is the view page
<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="picture">
<%= 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 %>
</div>
</div>