Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails更新仍然失败_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails RubyonRails更新仍然失败

Ruby on rails RubyonRails更新仍然失败,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我尝试了很多事情,但仍然失败,我想在这里实现一个编辑和更新操作。 下面是我的代码 家庭控制器: class HomeController < ApplicationController def index @inputs = Person.all end def new @input = Person.new end def create @input = Person.new(input_params) respond_to do

我尝试了很多事情,但仍然失败,我想在这里实现一个编辑和更新操作。 下面是我的代码

家庭控制器:

class HomeController < ApplicationController
  def index
    @inputs = Person.all
  end

  def new
    @input = Person.new
  end

  def create
    @input = Person.new(input_params)
    respond_to do |x|
    if @input.save
        x.html {redirect_to :action => 'index'}
    else
        x.html {render :action => 'new'}
    end
   end
  end

  def show
    @input = Person.find(params[:id])
  end

  def edit
    @input = Person.find(params[:id])
  end

  def update
    @input = Person.find(params[:id])
    respond_to do |x|
      if @input.update(input_params)
        x.html {redirect_to :action => 'index'}
      else
        x.html {render :edit}
      end
    end
  end

  private

  def input_params
    params.require(:inputs).permit(:name, :weight, :height, :color, :age)
  end
end
class HomeControllerindex'}
其他的
x、 html{render:action=>new'}
结束
结束
结束
def秀
@输入=Person.find(参数[:id])
结束
定义编辑
@输入=Person.find(参数[:id])
结束
def更新
@输入=Person.find(参数[:id])
回应你做的事|
if@input.update(输入参数)
x、 html{redirect_to:action=>index'}
其他的
x、 html{呈现:编辑}
结束
结束
结束
私有的
def输入参数
参数要求(:输入)。允许(:姓名,:体重,:身高,:颜色,:年龄)
结束
结束
edit.html.erb

<h1>Editing Data</h1>
<%= render 'form' %>
<%= link_to 'Show', home_path %> |
<%= link_to 'Back', home_index_path %>
编辑数据
|
form.html.erb:

<%= form_for :@input do |person| %>
  <div class="field">
    <%= person.label :name %><br>
    <%= person.text_field :name %>
  </div>
  <div class="field">
    <%= person.label :weight %><br>
    <%= person.number_field :weight %>
  </div>
  <div class="field">
    <%= person.label :height %><br>
    <%= person.number_field :height %>
  </div>
  <div class="field">
    <%= person.label :color %><br>
    <%= person.text_field :color %>
  </div>
  <div class="field">
    <%= person.label :age %><br>
    <%= person.number_field :age %>
  </div>
  <div class="actions">
    <%= person.submit %>
  </div>
<% end %>






路线是正确的,我可以引导我到编辑页面,但是,它显示,

新更新


看起来您没有将表单绑定到方法

提供了一个概述,但我建议您编辑以下内容:

<%= form_for @input do |f| %>
  <%= render 'form', f: f %>
  <%= f.submit "Update" %>
<% end %>

在你的部分中,应该是_form.html.erb

<div class="field">
<p><label for = "input_name">Name</label>:
 <%= f.text_field :name %>
</div>

姓名:
等等。。现在假设您已经正确设置了路由,它将返回到您的更新方法。如果您没有按照rails预期的方式设置路由,则应使用:

<%= form_for @article, url: **your_update_path** do |f| %>


运行rake routes时,只需添加指向更新方法的routes路径。

您应该使用
form\u for
而不是
form\u标签

<%= form_for @input do |x| %>
...

...
然后(取决于@input实际上是什么!)


您的问题在于路线。Rails是按惯例工作的,如果您遵循模式,“它只是工作”,如果您不这样做,那么您必须添加一些配置。我已经更新了我的答案。
<%= x.text_field :age %>