Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 Rails视图中存在未定义的方法错误(没有其他解决方案解决此问题)_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails视图中存在未定义的方法错误(没有其他解决方案解决此问题)

Ruby on rails Rails视图中存在未定义的方法错误(没有其他解决方案解决此问题),ruby-on-rails,Ruby On Rails,先谢谢你 我有一个非常基本的rails应用程序,它接受来自表单的用户输入,并将其显示在show视图中 我正在将重定向_中的对象ID传递到显示页面。show页面抛出了一个错误,我不知道为什么。为什么实例变量@questions不能使用EACH方法?(@show-action中的问题)-解决相同错误的其他答案与此特定情况无关。错误如下: Completed 500 Internal Server Error in 7ms ActionView::Template::Error (undefined

先谢谢你

我有一个非常基本的rails应用程序,它接受来自表单的用户输入,并将其显示在show视图中

我正在将重定向_中的对象ID传递到显示页面。show页面抛出了一个错误,我不知道为什么。为什么实例变量@questions不能使用EACH方法?(@show-action中的问题)-解决相同错误的其他答案与此特定情况无关。错误如下:

Completed 500 Internal Server Error in 7ms

ActionView::Template::Error (undefined method \`each' for #<Question:0x007fcff50ac950>):  
    1: <div class="flash_notice">flash[:notice]</div>  
    2: <% @questions.each do |q| %>  
    3: <%= q.answer %>  
    4: <% end %>  
  app/views/questions/show.html.erb:2:in   \`_app_views_questions_show_html_erb__4078795064500088796_70265573096080'

  Rendered /Users/iMR-CEO/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.2ms)  
  Rendered /Users/iMR-CEO/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.1ms)  
  Rendered /Users/iMR-CEO/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.4/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (12.6ms)
新视图:

class QuestionsController < ApplicationController
def index
   @questions = Question.all
end

def new
  @question = Question.new
   @ques1 = "What is the most important business development task you can focus on right      now?"
end

def edit
   @question = Question.find(params[:id])
end



def show
   @questions = Question.find(params[:id])

end

def update
@question = Question.find(params[:id])
if @question.update_attributes(question_params)
    flash[:notice] = 'message'
    redirect_to(:controller => 'home', :action => 'index')
else
  render("edit")
end
end

def create
@question = Question.new(question_params)
if @question.save
  flash[:notice] = 'Answer Stored.'
    redirect_to(:action => 'show', :id => @question.id)

else 
  redirect_to(:action => 'index')
end
end

def delete
@question = Question.find(params[:id])
end

def destroy
@question = Question.find(params[:id]).destroy
flash[:notice] = "Deleted Action - Nice job"
redirect_to(:action => 'new')
end

private
def question_params
params.require(:question).permit(:answer, :question_id)
end
end
<div class="flash_notice">flash[:notice]</div>
<% @questions.each do |q| %>
<%= q.answer %>
<% end %>
Rails.application.routes.draw do

#get 'home/index'

#get 'home/edit'

#get 'home/delete'

#get 'home/show'

root 'home#index'

#get 'index' => 'questions#index'

#get 'questions/edit'

#get 'new' => 'questions#new'

#get 'questions/delete'

#post 'questions/destroy'

#get 'questions/show'

#post 'create' => 'questions#create'



match ':controller(/:action(/:id))', :via => [:get, :post]
<%= form_for(@question, :url => {action: "create"}) do |f| %>
<%= f.label(:question, "Question:") %></br>
<%= @ques1 %></br></br>
<%= f.label(:question, "Answer Below") %></br>
<%= f.text_area(:answer) %></br>


<%= f.submit "Answer" %>

<% end %>
</br>

<div align="center"><%= link_to("Home", :action => 'index') %></div>
{action:“create”})do | f |%>






“索引”)%%>
show
视图中,您试图将
@questions
变量视为类似数组的对象,但它不是数组。您可能只想这样做:

<%= @question.answer %>

show
视图中,您试图将
@questions
变量视为类似数组的对象,但它不是数组。您可能只想这样做:

<%= @question.answer %>

show
操作中的
@questions
变量包含单个问题对象,而不是数组。ActiveRecord中的
find
方法将返回单个实体,如果找不到匹配项,则会引发异常

这与ActiveRecord中的
.all()
方法不同(例如在
索引
操作中),该方法返回一个问题数组,如果没有找到,则返回一个空数组


由于
each
方法属于,因此当代码尝试调用问题对象而不是数组对象上的
each
时会引发异常。

show操作中的
@questions
变量包含单个问题对象而不是数组。ActiveRecord中的
find
方法将返回单个实体,如果找不到匹配项,则会引发异常

这与ActiveRecord中的
.all()
方法不同(例如在
索引
操作中),该方法返回一个问题数组,如果没有找到,则返回一个空数组


由于
each
方法属于,因此当代码尝试调用问题对象而不是数组对象上的
each
时,会引发异常。

更改您的操作,如下所示:

def show
  @question = Question.find(params[:id])
end
 def show
@questions=Question.find(参数[:id])

显示视图:

<div class="flash_notice">flash[:notice]</div>
<%= @question.answer %>
flash[:注意]

像这样改变你的态度

def show
  @question = Question.find(params[:id])
end
 def show
@questions=Question.find(参数[:id])

显示视图:

<div class="flash_notice">flash[:notice]</div>
<%= @question.answer %>
flash[:注意]

在控制器中,将动作
@questions
变量显示为类似数组的对象,但不是数组。当您使用该
@questions时。在显示视图页面中的每个
都会迭代
@questions
对象键和值对。更改代码如下:

def show
  @question = Question.find(params[:id])
end
 def show
问题控制员

def show
  @question = Question.find(params[:id])
end
显示视图:

<div class="flash_notice">flash[:notice]</div>    
  <%= @question.answer %>
flash[:注意]

在控制器中,将动作
@questions
变量显示为类似数组的对象,但不是数组。当您使用该
@questions时。在显示视图页面中的每个
都会迭代
@questions
对象键和值对。更改代码如下:

def show
  @question = Question.find(params[:id])
end
 def show
问题控制员

def show
  @question = Question.find(params[:id])
end
显示视图:

<div class="flash_notice">flash[:notice]</div>    
  <%= @question.answer %>
flash[:注意]
试试这个:

显示视图:

<div class="flash_notice"><%= flash[:notice] %></div>
<%= @questions.answer %>

试试这个:

显示视图:

<div class="flash_notice"><%= flash[:notice] %></div>
<%= @questions.answer %>


问题。find
返回一条记录,而不是一个集合,因此在show视图中,您试图迭代单个对象。这就是错误。理解-那么,在显示页面上显示以新表单创建的对象的正确方式是什么?我正在收集:您不能使用each方法,因为show操作(question.find)只引用一条记录,而不是一个集合。那么,要显示一条记录,视图上会显示什么?也将进行研究。。但您会使用什么?
Question.find
返回一条记录,而不是一个集合,因此在show视图中,您尝试迭代单个对象。这就是错误。理解-那么,在显示页面上显示以新表单创建的对象的正确方式是什么?我正在收集:您不能使用each方法,因为show操作(question.find)只引用一条记录,而不是一个集合。那么,要显示一条记录,视图上会显示什么?也将进行研究。。但是你会用什么?谢谢你。现在我明白了。我从来没有想过这个问题。find只查找一条记录,而each方法只涉及到有很多记录的情况。@RyanBigg对此表示感谢。现在我明白了。我从来没有想过这个问题。find只查找一条记录,而each方法只涉及到有很多记录的情况。@RyanBigg肯定是这样。谢谢你。正如我在上面的评论中所说,我甚至没有想到每一张唱片都会引用一张以上的唱片。谢谢你。正如我在上面的评论中所说的,我甚至没有想到每一张唱片都会引用一张以上的唱片。是的,这肯定会奏效。现在我明白了!谢谢你的回复。是的,这肯定会有用的。现在我明白了!谢谢你的回复。谢谢@Scottxu:)非常感谢你的时间。谢谢@Scottxu:)非常感谢你的时间。谢谢它,@KishorMohan-谢谢你的时间!谢谢你,@KishorMohan-谢谢你的时间!