ruby-on-rails - 从表单值 ruby​​ on rails 更新模型数据

标签 ruby-on-rails ruby web ruby-on-rails-4

您好,我是 ruby​​ on rails 的新手。我这里有表格

<%= form_tag do %>
    <%= text_field_tag :fullname, params[:fullname], placeholder: 'fullname' %>
    .
    .
    .

    <a href="/userEdit"> <%= submit_tag "save" %> </a>
<% end %>

那些表单是用来更新模型数据的。在我的 Controller 中我有

def updateUser
    user = Users.find(session[:user_id])
    user.fullname = params[:fullname]
    user.save
    render 'profile'
end

它不工作(数据不更新),但是当我尝试时

def updateUser
    user = Users.find(session[:user_id])
    user.fullname = 'david'
    user.save
    render 'profile'
end

它正在运行(数据已更新)。我不知道我哪里出错了,请帮助我。很抱歉问了这么简单的问题,我是 Ruby 的新手(Rails 也是),我搜索过但没有得到适合这种情况的答案。谢谢

最佳答案

I'm very new to ruby on rails

欢迎 - 让我给你一些想法!

--

表单

首先,您的 form_tag未正确创建。您需要在其中放置一条路线(以便它知道在哪里提交数据):

<%= form_tag your_path_here do %>

这是针对 form_tag 助手的,但是,当您编辑对象时,使用 form_for 可能会更好。 helper - 它需要一个实际的对象(值):

<%= form_for @user do |f| %>
   <%= f.text_field :full_name %>
   <%= f.submit "Submit" %>
<% end %>

这种类型的表单必须与Rails 的resourceful 结构一起使用,这是我的第二点...

--

资源

Rails 是围绕资源丰富 基础架构(其中每个数据对象都是一个资源)的理念构建的。如果您正在更新/编辑一个对象,典型的解释是您将编辑一个资源,因此需要使用rails' resourceful structure处理它:

#app/controllers/users_controller.rb
class UsersController < ApplicationController
   before_action :set_user, only: [:edit, :update, :show]

   def index
       @users = User.all
   end

   def new
       @user = User.new
   end

   def create
       @user = User.new(user_params)
       @user.save
   end

   def edit
   end

   def update
      @user.update(user_params)
   end

   private

   def user_params
      params.require(:user).permit(:fullname, :etc)
   end

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

end

这将允许您定义 resourceful routes为此:

#config/routes.rb
resources :users

将此设置与 form_for 一起使用对您有用

关于ruby-on-rails - 从表单值 ruby​​ on rails 更新模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208509/

相关文章:

ruby-on-rails - Rails 请求返回状态 200 但没有响应数据

ruby - 如何避免使用 ruby​​ 1.9 和 Mechanize 表单提交的 Encoding::CompatibilityError?

ruby-on-rails - ActiveRecord::Errors 的 Rails 3 替代品是什么?

ruby-on-rails - rails 3.0 中的多个作用域

ruby-on-rails - 向前传递所有参数?

javascript - 使图像占屏幕的百分比而不是像素?

javascript - $_GET 不适用于我的 php 文件

python - 从命令行或使用 python 从网站截取屏幕截图

ruby-on-rails - 验证失败 : Upload file has an extension that does not match its contents

ruby - 如何在 Ruby 中创建文件