link_to with remote =>真的没有按预期运作

时间:2011-07-12 22:45:04

标签: jquery ruby-on-rails

我正在使用rails 3,这就是我在视图中设置link_to的方式

<%= link_to ('add',
                :url => {:controller => 'favourite_companies', :action =>'create', 
                :company_id=>@company.id,   
                :company_name=>@company.company_name, :remote => true}) %>

当我点击它时,页面刷新并且没有任何反应。

我添加了&lt;%= csrf_meta_tag%&gt;和所有的javascript文件。

在控制器中,该功能如下所示:

def create
  @favorite_list = 
      FavouriteCompany.new(:user_id=>curr_user.id,:company_id=>params[:company_id])
  @favorite_list.save
  render :partial => "create"

知道可能出错的是什么?谢谢。

2 个答案:

答案 0 :(得分:4)

您是否查看了通过浏览器开发工具(即firebug等)输出的HTML?

我相信你有:remote => true错误的哈希。

尝试:

<%= link_to ('add',
     {:url => {:controller => 'favourite_companies', :action =>'create', 
     :company_id=>@company.id,   
     :company_name=>@company.company_name}}, :remote => true) %>

您是否有理由不使用Rails路由并通过标准Rails流程生成链接,如:

<%= link_to 'add', favourite_companies_path(@company), :remote => true %>

答案 1 :(得分:0)

有趣的是,我从未将link_to用于remote选项。

无论如何,它应该像所有ajax调用一样工作。

所以我认为你应该:

  • 从您的控制器中删除render :partial => "create"

  • 创建视图create.js.erb

  • 将您的代码放入其中,如下所示:

$('#your_container').html("<%= escape_javascript(render(:partial => 'create')) %>");