ruby-on-rails - 一种型号有多种更新表格

标签 ruby-on-rails forms actioncontroller

我想在一页上有多个表单。让我们举个例子来理解我想要的:

我有一个管理员页面,假设它是 admins#show 页面。我的管理员必须在此页面上的一张表格上更改他的姓名,并在另一张表格上更改他的年龄。我知道我可以创建一个表单,但我想要多个表单(因为这只是一个示例)。所以我的 admins#show 页面看起来像这样:

<%= form_for @admin do |a| %>
    <%= a.label :name %>
    <%= a.text_field :name %>
    <%= a.submit "Submit name change" %>
<% end %>

<%= form_for @admin do |e| %>
    <%= e.label :age %>
    <%= e.number_field :age %>
    <%= e.submit "Submit age change" %>
<% end %>

但是在我的 Controller 中,我不知道它是如何工作的,这是我的问题。我想我有类似的东西,但是我如何在更新方法中划分表单输入?:

def edit
    @admin = Admin.find(params[:id])
end

def update
    @admin= Admin.find(params[:id])
    if @admin.update_attributes(:name=> admin_params1[:name])
        redirect_to @admin
    else
        render 'edit'
    end

    if @admin.update_attributes(:age=> admin_params2[:age])
        redirect_to @admin
    else
        render 'edit'
    end
end


private

def admin_params1
    params.require(:admin).permit(:name)
end

def admin_params2
    params.require(:admin).permit(:age)
end

最佳答案

你正在做的事情有点非正统,但由于你坚持并且只是一个例子,我想你可以处理< strong>更新方法通过这样做

def update
  @admin= Admin.find(params[:id])
  if params[:commit] == "Submit name change"
    if @admin.update_attributes(admin_params1)
      redirect_to @admin
    else
      render 'edit'
    end
  elsif params[:commit] == "Submit age change"
    if @admin.update_attributes(admin_params2)
      redirect_to @admin
    else
      render 'edit'
    end
  end
end

注意:未经测试!

关于ruby-on-rails - 一种型号有多种更新表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105785/

相关文章:

html - 表单选择上的背景文本

ruby-on-rails - 在 ApplicationController 中注册不同类型的回调

ruby-on-rails-3 - 如何在 ActionController TestCase (Rails 3.0.9) 中禁用渲染 View

ruby-on-rails - Rails 4 has_one 关联表单未构建

ruby-on-rails - 构建一个 Ruby gem 以收集项目中的所有本地 gem

ruby-on-rails - rails : Postgres Database in Heroku (probably dumb questions)

javascript - 在 php 中将表单提交给自身后,表单重置按钮不起作用

ruby-on-rails - 如何在 Active Record 中的特定日期之后或之前搜索日期字段

ruby-on-rails - 为什么 Nginx 一直返回 301?

php - Yii2 ajax 验证不起作用