Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 我的显示页面需要如何编写才能显示数据?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 我的显示页面需要如何编写才能显示数据?

Ruby on rails 我的显示页面需要如何编写才能显示数据?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Ruby on Rails领域的新手,我正在开发一个自然的下拉表单,您可以在这里的_form.html.erb中看到代码: <%= simple_form_for(@job, html: {class: 'form-horizontal'}) do |f| %> <div class="control-group"> <%= f.label "Poster:", class: 'control-label' %> <div cla

我是Ruby on Rails领域的新手,我正在开发一个自然的下拉表单,您可以在这里的_form.html.erb中看到代码:

<%= simple_form_for(@job, html: {class: 'form-horizontal'}) do |f| %>
  <div class="control-group">
    <%= f.label "Poster:", class: 'control-label' %>
    <div class="controls">
      <%= f.select(:status, options_for_select([['Nick Maloney','Nick Maloney'],
        ['Peter Brown','Peter Brown'],['Jen Morris','Jen Morris']])) %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label "Category:", class: 'control-label' %>
    <div class="controls">
      <%= f.select(:status, options_for_select([['Landscaping','Landscaping'],
        ['Babysitting','Babysitting'],['Tree planting','Tree planting']])) %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label "Location:", class: 'control-label' %>
    <div class="controls">
      <%= f.select(:status, options_for_select([['Dorchester','Dorchester'],
        ['Roxbury','Roxbury'],['Mattapan','Mattapan']])) %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label "Status:", class: 'control-label' %>
    <div class="controls">
      <%= f.select(:status, options_for_select([['New','New'],
        ['Pending','Pending'],['Complete','Complete']])) %>
    </div>
  </div>
  <%= f.input :description, label: "Job Description" %>
  <%= f.submit 'Add Job', class: 'btn btn-default' %>
<% end %>
我更改了表演动作以反映这一点:

def show
    @job = Job.find(jobs_params[:id])
end
然后我得到一个参数缺失或值为空:job

我做了一个rails控制台,我有:

Job Load (1.1ms) SELECT "jobs".* FROM "jobs" LIMIT ? [["LIMIT", 11]] => #<ActiveRecord::Relation [#<Job id: 1, poster: nil, category: nil, location: nil, status: "New", description: "Your job is to plant trees all over the Dorchester...", created_at: "2017-08-01 10:29:40", updated_at: "2017-08-01 10:29:40">]> 
我不明白为什么除了描述我什么都没有

似乎每个表单输入都是这样的:

class JobsController < ApplicationController
  before_action :find_job, only: [:show, :edit, :update, :destroy]

  def index
    # @job = Job.all
  end

  def show
    @job = Job.find_job(jobs_params[:id])
  end

  def new
    @job = Job.new
  end

  def create
    @job = Job.new(jobs_params)

    if @job.save
      redirect_to @job, notice: 'Your job was successfully added'
    else
      render "New"
    end
  end

  def edit

  end

  def update

  end

  def destroy

  end

  private

  def jobs_params
    params.require(:job).permit(:poster, :category, :location, :status, :description)
  end

  def find_job
    @job = Job.find(params[:id])
  end
end
Rails.application.routes.draw do
  resources :jobs
  root 'jobs#index'
end
<div class="control-group">
    <%= f.label "Poster:", class: 'control-label' %>
    <div class="controls">
      <%= f.select(:status, options_for_select([['Nick Maloney','Nick Maloney'],
        ['Peter Brown','Peter Brown'],['Jen Morris','Jen Morris']])) %>
    </div>
在rails控制台中给了我一个零,只有这一个:

<%= f.input :description, label: "Job Description" %>

已成功输入数据,因此f.select的代码有问题,但我不确定是什么问题。

从作业控制器的显示操作中删除此行:

@job = Job.find_job(jobs_params[:id])
改变这个

  def show
    @job = Job.find_job(jobs_params[:id])
  end
对此

  def show
  end
@job记录由before_操作为您检索

并在show.html.erb中使用它

<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
尝试将您的_form.html.erb替换为

show.html.erb

<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>
你有

职务编号:1,海报:无,类别:无,位置:无,状态: 新的,描述:你的工作是在全世界植树 多切斯特


因为mistek在_form.html.erb

中的每个select中都使用了:status,您需要删除Job.find_Job。。从show action开始,因为它将尝试覆盖@job的当前值,该值在\u action之前已设置。此外,如果您试图根据id查找记录,则find\u job甚至不是activerecord中的方法。它应该是find或find_by@Ale将此行@job=job.find_jobs_params[:id]替换为@job=job.findjobs_params[:id]。其次,这就是为什么你要迭代@job的循环。它只有一个作业。如果你想要所有作业。那么你可以通过这个代码@jobs=job.all得到它,你可以迭代@jobs的循环@jobs@Vishal实际上,OP只需完全删除“查找”作业行即可。before_操作将为他获取记录。而jobs_参数在show中不可用。@SteveTurczyn Sorry我没有注意到该方法。是的,你是对的。不需要在show方法中更正任何内容。但是,如果他想要所有作业,那么他需要编写@jobs=Job.allSteve,我检查了我的rails控制台,我将继续得到一个空白屏幕,因为:[Snake,我检查了我的rails控制台,我将继续得到一个空白屏幕,因为:[
   def show
   end
<h1><%= @job.poster %></h1>
<p><%= @job.category %></p>
<p><%= @job.location %></p>