繁体   English   中英

多个提交按钮栏

[英]Multiple submit buttons rails

我正在尝试为表单创建多个提交按钮,但我一直收到此错误:

Couldn't find User with id=edit_individual

在发现:

# Use callbacks to share common setup or constraints between actions.
def set_user    
@user = User.find(params[:id])
end

我的控制器页面:

def edit_individual
  if User.find_by_id (params[:user_ids])
    if params[:Delete_multiple]
      @users = User.find(params[:user_ids])
      @users.each do |user|
        user.destroy
      end
      redirect_to :back, notice: 'All selected users were successfuly deleted'
    else
      @users = User.find(params[:user_ids])
    end
  else
    redirect_to :back, alert: 'No users were selected for editing'
  end
end

def update_individual

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

end

我的索引页面:

<%= form_tag edit_individual_users_path do %>
<table class="table table-hover">
  <thead>
    <tr>
      <th></th>
      <th><%= sort_link @q, :firstName, "First name" %></th>
      <th><%= sort_link @q, :lastName, "Last name" %></th>
      <th><%= sort_link @q, :registrationNumber, "Registration number" %></th>
      <th><%= sort_link @q, :email, "Email" %></th>
      <th></th>
     </tr>
  </thead>
  <tbody>
    <% @users.each do |user| %>
    <% if (user.archive == false) %>
      <tr>
      <td><%= check_box_tag "user_ids[]", user.id %></td>
      <td><%= user.firstName %></td>
      <td><%= user.lastName %></td>
      <td><%= user.registrationNumber %></td>
      <td><%= user.email %></td>
      <td><%= link_to 'View', user, class: 'btn btn-info btn-mini', title: 'View users\'s information' %></td>
      <td><%= link_to 'Edit', edit_user_path(user), class: 'btn btn-warning btn-mini', title: 'Edit users\'s information', method: 'get' %></td>
      <td><%= link_to 'Delete', user, class: 'btn btn-danger btn-mini', title: 'Delete user', method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
    <% end %>
  </tbody>
  </table>
  <p><%= select_tag :field, options_for_select([["All Fields", ""], ["First name", "firstName"], ["Last name", "price"], ["Registration number", "registrationNumber"], ["Email", "email"]]) %></p>

<p><%= submit_tag "Edit checked", name: 'Edit_multiple' %></p>
<p><%= submit_tag "Delete checked", name: 'Delete_multiple', data: { confirm: 'Are you sure you want to delete multiple users?' } %></p>
<% end %>

edit_individual页面:

<% form_tag update_individual_users_path, :method => :put do %>
  <% for product in @products %>
    <% fields_for "users[]", users do |f| %>
      <h2><%=h user.name %></h2>
      <%= render :partial "fields", :locals => { :f => f, :user => user } %>
    <% end %>
  <% end %>
  <p><%= submit_tag "Submit" %></p>
<% end %>

路由文件:

resources :users do
  get 'archive', on: :collection
  post 'edit_individual', on: :collection
  put 'update_individual', on: :collection
end

删除部分工作正常。 同样,编辑部分实际上是在编辑该字段,但是显示该错误(因此它不会重定向回索引页面,这会使它看起来很糟)。

谁能帮我解决这个问题? 花了很多时间进行editdelete所以如果我不得不删除编辑部分,那将是非常糟糕的。

编辑1:另外,如果我正在编辑3个用户,然后单击“提交”按钮,仅允许2/3通过(由于验证),则没有错误(我只是被重定向回edit_individual.html以完成最后一个用户),然后再次单击“提交”,一切都通过了,我将收到一个错误消息。

我实际上设法找到了问题所在。 问题在于:

def update_individual

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

end

代替:

redirect_to :back

它应该是:

redirect_to users_path

或任何其他固定路径。 有没有办法保留“ redirect_to:back”,还是必须为其他使用此视图的视图(在同一控制器内)创建新方法?

它不应该运行,因为您没有任何params[:id]

如果您使用before_filter然后

before_filter: set_user except: [:update_individual, :edit_individual]

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

以及您在edit_individual调用update_individualedit_individual

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM