在Rails中的link_to方法中添加一个onclick选项?

5
我希望为link_to方法添加一个onclick选项,以加载模态对话框...我正在使用rails版本2.3.8,并且在谷歌上搜索了一下,但没能找到答案。请问有人可以帮我吗?
我的link_to方法如下。
<%= link_to 'All countries',{:controller=>'countries', :action=>'new'}, :remote => true %>
2个回答

6
如果你使用的是2.3.8版本,那么你没有:remote => true这个选项。如果你想执行ajax操作,你需要使用link_to_remote。因此,它看起来应该像这样:
<%= link_to_remote 'All countries', :url => {:controller => 'countries', :action => 'new'}%>
<div id="populate_me"></div>

而你的新方法必须使用类似以下的方式处理ajax请求

countries_controller.rb

def new
  <do something>
  render :update do |page|
    page.replace_html 'populate_me', :partial => 'whatever'
  end
end

更新

如果您想要在ajax操作之外使用onclick事件,只需将其传递到html选项中:

<%= link_to_remote 'All countries', :url => {:controller => 'countries', :action => 'new'}, :html => {:onclick => 'alert("some javascript executed before ajax")'} %>

谢谢Chris..我将部分内容加载到那个div中..但是我想要加载模态对话框。我应该把代码放在哪里?我是Rails的新手,抱歉问这样愚蠢的问题。 - Rosh

0

您可以将此添加到链接中:

, :class => "pop light", :id => "modal_link"

然后,你的JS会显示类似于这样的内容:

<script type="text/javascript">
    $(document).ready(function() {
      $('a.poplight[href^=#]').click(function() {
        var popID = $(this).attr('rel'); //Get Popup Name
        var popURL = $(this).attr('href'); //Get Popup href to define size
        var query= popURL.split('?');
        var dim= query[1].split('&');
        var popWidth = dim[0].split('=')[1]; //Gets the first query string value
        $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend('<a href="#" class="close"></a>');
        $('a.close').hide();
        var popMargTop = ($('#' + popID).height() + 80) / 2;
        var popMargLeft = ($('#' + popID).width() + 80) / 2;
        $('#' + popID).css({
            'margin-top' : -popMargTop,
            'margin-left' : -popMargLeft
        });
        $('body').append('<div id="fade"></div>');
        $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
        return false;
      });
      $('a.close').live('click', function() {
          $('#fade , .popup_block').fadeOut(function() {
            $('#fade, a.close').remove(); 
          });
          return false;
      });         
      $('#modal_link').click();
    });
  </script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接