如何在rails中保存没有表格的数据?

How to save data in rails with no form?

我是 rails 的新手,我只是在学习基础知识。 这是我保存数据的代码:

app/controllers/employee_controller.rb

 class EmployeesController < ApplicationController

    def index
      render json: @employees = Employee.all
    end

    def show
      render json: @employee = Employee.find(params[:id])
    end

    def new
      @employee = Employee.new
    end

    def create
       @employee = Employee.new(employee_params)

      @employee.save
      redirect_to @employee
    end

    private
       def employee_params
         params.require(:employee).permit(:fname, :mname, :lname, :contactno, :address, :username, :password)
       end
 end

app/views/employees/new.html.erb

<%= form_for @employee do |f| %>
<p>
  <label>First Name</label><br>
  <%= f.text_field :fname %>
</p>
<p>
  <label>Middle Name</label><br>
  <%= f.text_field :mname %>
</p>
<p>
  <label>Last Name</label><br>
  <%= f.text_field :lname %>
</p>
<p>
  <label>Contact No.</label><br>
  <%= f.text_field :contactno %>
</p>
<p>
  <label>Address</label><br>
  <%= f.text_area :address %>
</p>
<br>
<p>
  <label>Username</label><br>
  <%= f.text_field :username %>
</p>
<p>
  <label>Password</label><br>
  <%= f.text_field :password %>
</p>
<br>

<p>
  <%= f.submit %>
</p>

但是,我的目标是在没有 html 表格的情况下立即保存。 (无输入)就像我访问某个 URL 并且值自动保存在数据库中一样。
首先,我想在每个字段中分配一个常量值,看看它是如何工作的。

示例,

如何在访问某个 URL/site 后立即分配这些值。

在您的控制器中尝试类似的操作:

class EmployeesController < ApplicationController

  def custom
    @employee = Employee.create(fname: "sample name")
  end
end

并在config/routes.rb:

中定义正确的路线
get "/custom" => "employees#custom"

当您在浏览器中输入正确的 url 时,例如:

localhost:3000/custom

应该保存 Employee

祝你好运!

首先向控制器添加一个方法

def update_fname
    # get the parameters
    fname = params[:fname]

    # get the employee ID
    id = params[:id]

    # find the employee
    @employee = Employee.find(id)

    # update the employee
    employee.update_attributes(fname: fname)

    redirect_to @employee
end

然后,在您的路线中,您添加:

resources :employees do 
    get 'update_fname'
end

而你调用路由,应该是谁http://localhost:3000/employees/{:id}/update_fname?fname={your_fname}