2012-10-01 41 views
0

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

我只是不太明白如何将所有这些东西连接在一起,(我也假设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

'$(“。modal”)''上的引号? – MurifoX

+0

啊是的,这将有助于大声笑,编辑问题,莫代尔还没有显示寿?你认为divs是选择模态div类的正确方法吗? – dodgerogers747

回答

1

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

+0

嗨汤姆,我在编辑中添加了新的表单。你会把div class modal放在那个文件中?它会像这样:html => {render partial“votes/info”} do | f | ? – dodgerogers747

+1

你可以把它放在底部,但它真的没关系,因为它是隐藏的或模态的。只是分区,没有别的。 js.erb文件将呈现并插入部分的html。 –

+0

我把div放在窗体的底部,但仍然不显示,创建新对象时页面是否可以重新渲染,以防止模式显示? – dodgerogers747