У меня есть отношения с User
и Micropost
(User has_many Micropost and Micropost belongs_to User
).
В модальной форме у меня есть форма с select2
. Я хотел бы сделать это, выбрать столько пользователей, сколько захочу, и опубликовать микропостол для этих пользователей из одной формы. Как мне это сделать?
В принципе, я хотел бы создать микропотоки с user_id выбранных пользователей в select2 box в одной форме submit.
Таблица Micropost после публикации (скажем, я выбрал 4 пользователя для отправки моего сообщения)
micropost_id micropost user_id posted_by_user_id
----------------------------------------------------------------------
1 Some Message 1 Current_user_id(say 5)
2 Some Message 2 Current_user_id(say 5)
3 Some Message 3 Current_user_id(say 5)
4 Some Message 4 Current_user_id(say 5)
форма
<form accept-charset="UTF-8" class="simple_form new_share" id="new_share" method="post">
<%= csrf_meta_tag %>
<div class="form-inputs">
<select multiple id="UserSelect" style="width:100%">
<%@users.each do |user| %>
<option value="<%=user.id%>"><%=user.username%></option>
<% end %>
</select>
<div class="control-group text required">
<div class="controls">
<p> Enter your Custom Message </p>
<textarea class="text required span4" id="review_text_area"
name="review[review]" placeholder="Share"
rows="3">
</textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button id="ShareModalSubmit" class="btn" type="submit" value="Share">Share</button>
<button id="share-confirm-close" class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button>
</div>
Я не знаю, если я понимаю.
Возможно ли это? Если нет, то как мне достичь этой функции?
Работал всю ночь.
Пожалуйста, несите меня, я новичок.
Мне удалось решить это, это... не уверен, что это самое чистое решение. Если кто-нибудь знает какое-либо чистое решение, сообщите мне.
def create
respond_to do |format|
format.js {
if params[:Users_ids] #Coming from select box
univ_id = params[:univ_id]
univ_name = params[:univ_name]
params[:SelectedUsers_ids].each do |user_id|
@user = User.find(user_id.to_i)
params[:user_id] = user_id.to_i
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
flash[:notice] = "We shared your message with the selected users"
else
flash[:error] = "Sorry! We could not share your message !"
end
end
return
else
flash[:error] = "Sorry! We could not share your message !"
redirect_to request.referer
return
end
}
format.html {
@user = User.find(params[:user_id].to_i)
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
flash[:notice] = "We shared your message successfully!"
redirect_to request.referer
else
flash[:error] = "Sorry! We could not share your message !"
redirect_to request.referer
end
}
end # end of respond to
end