Rails3自定义路由格式

时间:2010-07-28 21:12:12

标签: routing ruby-on-rails-3

在routes.rb中,我被迫添加:


post 'admin/user_update'

让我的form_tag工作:


form_tag( { :action => :update_user, :id => @user.id }, :remote => :true )

现在我明白了:


Template is missing

Missing template admin/update_user with {:handlers=>[:erb, :rjs, :builder,
:rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths
"/rails/test/app/views"

我的模板是update_user.js.erb:


$('#user-edit-<%= @user.id %>').html("&nbsp;");
$('#tr-user-edit-<%= @user.id %>').hide();

如何让路由接受我想用js处理请求?

如何将js添加到:formats?

请不要在回复中使用“资源”一词。我知道这是一条自定义路线。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,这是一个jquery问题(尽管你从未明确提到过jquery)

尝试添加:

$(document).ready(function() {
    $.ajaxSetup({ 
        'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
    });
});

到你的application.js文件。

答案 1 :(得分:0)

您可以添加

匹配'update_user /:id'=&gt; 'admin#update_user',:as =&gt; :update_user,:via =&gt; :放

到你的路线。

在视图中,你可以这样做,

form_for(@user, :url => update_user_path(@user.id), :remote => true) do |f|
.
.
.

我认为根据请求类型,它应该选择适当的格式文件,否则 你可以做的是在控制器代码之后,

def update_user
  .
  .
  .
  respond_to do |format|
    format.js
  end
end