Отправить одну форму для той же модели с множеством User_id, выбранным с окном select2 в рельсах 3

0

У меня есть отношения с 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>

Я не знаю, если я понимаю.

Возможно ли это? Если нет, то как мне достичь этой функции?

Работал всю ночь.
Пожалуйста, несите меня, я новичок.

Теги:
forms
ruby-on-rails-3
select2-rails

1 ответ

0
Лучший ответ

Мне удалось решить это, это... не уверен, что это самое чистое решение. Если кто-нибудь знает какое-либо чистое решение, сообщите мне.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню