创建操作后的Rails模态弹出窗口

时间:2012-10-01 12:25:41

标签: javascript ruby-on-rails popup modal-dialog

我在我的rails应用程序中有一个简单的投票操作,我希望在成功的创建操作后显示模式弹出窗口(如在twitter引导程序中的on)。我有一个模态视图partial,一个接受.js的response_to块和一个create.js.erb文件,理论上应该在调用create动作时显示,如果我没弄错的话?

我只是不太明白如何将所有这些东西连接在一起,(我还假设javascript不正确)任何提示都会非常感谢!

controller.rb

def create
    @vote = Vote.new(params[:vote])
    respond_to do |format|
    if @vote.save
      format.html { redirect_to :back,  notice: "Thank you for voting! why not Tweet your vote?" }
      format.js  <!--should there be a call to a specific file here?-->
    else
      flash[:error] = "please try again"
      redirect_to :back
    end
    end
  end
end

票/ info.html.erb

<div class="modal hide fade">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Thanks for voting!</h3>
  </div>
  <div class="modal-body">
    <p>Why not tweet your selection?</p>
  </div>
  <div class="modal-footer">
    <a href="#" class="btn">Close</a>
    <a href="#" class="btn btn-primary">Save changes</a>
  </div>
</div>

票/ create.js.erb

$(".modal").html(<%= escape_javascript render partial: 'votes/info' %>);
$(".modal").show();

投票_form.html.erb

<%= form_for([Vote.new(hotel_id: hotel.id)]) do |f| %>
    <%= f.hidden_field :hotel_id %>
    <%= f.submit "Vote", class: "btn-large btn-info" %>
    <% end %>

1 个答案:

答案 0 :(得分:1)

您没有向我们展示选票/ new.html.erb,但我认为问题是<div class="modal hide fade">需要在该文件中,而不是部分。另外,请确保部分文件名以下划线“_info.html.erb”开头。