2011-09-22 53 views
0

我一直试图将Ryan Bates Railscast 198应用到rails 3中,就像4天一样......至少在晚上,如果你知道我的意思。总之,这里是我的代码现在所拥有的:需要在Rails 3中实现Railscast 198的帮助

用户控制器操作(制定设置,显示批准的不同状态):

def index 
    if params[:approved] == "false" 
    @users = User.find_all_by_approved(false) 
    elsif 
    @users = User.find_all_by_approved(true) 
    else 
    @users = User.all 
    end 
end 

def update 
    @user = User.find(params[:id]) 

    respond_to do |format| 
    if @user.update_attributes(params[:user]) 
     format.html { redirect_to root_path flash[:notice] = "User was successfully updated." } 
    else 
     format.html { render :action => "edit" } 
    end 
    end 
end 

def edit_individual 
    @users = User.find(params[:user_ids]) 
end 

def update_individual 
    @users = User.update(params[:users].keys, params[:users].values).reject { |p| p.errors.empty? } 
    if @users.empty? 
     flash[:notice] = "Users updated" 
     redirect_to users_url 
    else 
     render :action => "edit_individual" 
    end 
    end 
end 

我的用户#指数

<h1> Users</h1> 

<%= link_to "All Users", :action => "index" %> | 
<%= link_to "Users awaiting approval", :action => "index", :approved => "false"%> 
| 
<%= link_to "Approved Users", :action => "index", :approved => "true" %> 

<%= form_tag edit_individual_users_path, :method => :put do %> 
<table> 
    <tr> 
    <th>Email Address</th> 
    <th>Approved</th> 
    <th></th> 
    </tr> 

<% for user in @users %> 
<tr> 
    <td> <%= user.email %></td> 
    <td><%= check_box_tag user.id %></td> 
    <td> <%= link_to "Edit", edit_user_path(user) %></td> 
</tr> 
<% end %> 

<p><%= submit_tag "Edit Checked" %></p> 
    </table> 

<% end %> 

而用户#edit_individual

<%= form_tag update_individual_users_path, :method => :put do %> 
<% for user in @users %> 
<%= fields_for "users[]", user do |f| %> 
    <h2><%=h user.name %></h2> 
    <p><%= check_box_tag user.id %></p> 
<% end %> 
<% end %> 
<p><%= submit_tag "Submit" %></p> 

<%端%>

的routes.rb

devise_for :users 
    resources :users do 
    collection do 
     post :edit_individual 
     put :update_individual 
    end 
    end 
end 

所以我处理的基本通过在google:fields_for需要一个 “=” 这样的东西。 #INDEX显示正常,但如果我选中一个复选框,然后点击编辑按钮检查我得到以下错误:

ActiveRecord::RecordNotFound in UsersController#update 

Couldn't find User with id=edit_individual 

任何想法?非常感谢

+0

我有点迷失在你的索引方法的条件语句中;我几乎是积极的,它没有做你认为的事情。看看HTML如何实际呈现,特别是表单字段名称,并确保它符合您的期望。 –

回答

0

请检查您的routes.rb和控制器代码,因为它是相当咬下从Railscast 198的页面上的代码:http://railscasts.com/episodes/198-edit-multiple-individually

这是最好的只是复制它,如果你是新来的轨并针对使用用户而不是产品进行调整。然后通过它来试图了解它的功能。

+0

感谢您的提示。笔记。我会回过头来,为railscast做所有工作,然后重新实现索引操作和其他项目。 –