Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 On Rails 4_Simple Form - Fatal编程技术网

Ruby on rails 错误未使用其他控制器显示

Ruby on rails 错误未使用其他控制器显示,ruby-on-rails,ruby-on-rails-4,simple-form,Ruby On Rails,Ruby On Rails 4,Simple Form,在我的任务展示页面中,我有一个创建响应的表单,响应也显示在这里。这个任务有很多反应 视图\任务\ show.html.erb <%= simple_form_for([@task, Response.new]) do |f| %> <%= f.input :is_comment, as: :hidden %> <%= f.input :negotiate_pay, label: false %> <%= f

在我的任务展示页面中,我有一个创建响应的表单,响应也显示在这里。这个任务有很多反应

视图\任务\ show.html.erb

<%= simple_form_for([@task, Response.new]) do |f| %>
        <%= f.input :is_comment, as: :hidden %>
        <%= f.input :negotiate_pay, label: false %>
        <%= f.input :comment_text, as: :text, input_html: {rows: 3}, label: false %>


        <div class="row"> 
            <div class="col-md-4 col-md-offset-8">
                <%= f.button :submit %>
            </div>
        </div>
    </div>
    <% end %>
    <br>
    <div id="comments">
        <%= render @responses %>
    </div>
控制器\r\u控制器

def show
    @task = Task.find(params[:id])
    @responses = @task.responses.all
end
def create
    @task = Task.find(params[:task_id])
    @response = @task.responses.create(response_params)
    @response.user_id = current_user.id
    @response.is_comment = params[:is_comment]
    @response.save
    respond_to do |format|
        format.html { redirect_to @task }
        format.js
    end
end
它工作正常,但在验证和提交后,它不会在表单中显示错误。如何在任务的显示页面中的响应表单中显示错误消息。顺便说一句,我用的是一个简单的表格

请帮忙

编辑:

型号: models\response.rb

belongs_to :user
belongs_to :task
has_many :subcomments
default_scope -> { order('created_at DESC') }

#VALIDATIONS
validates :comment_text, presence: true
validates :negotiate_pay, presence: true

您需要将显示错误的代码添加到表单中:

<%= simple_form_for([@task, Response.new]) do |f| %>
  <% if @response.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@response.errors.count, "error") %> prohibited this response from being saved:</h2>
      <ul>
      <% @response.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
还要确保在application.html.erb中显示错误:

<% if flash[:error] -%>
    <p class='alert alert-danger'><%=h flash[:error] %></p>
  <% end -%>
  <% if flash[:notice] -%>
    <p class='alert alert-success'><%=h flash[:notice] %></p>
  <% end -%>

您可以显示您的模型代码或至少验证部分吗?我假设你的模型是从ActiveRecord派生的?此外,您还需要在视图中的某个位置显示错误内容,请参见第8节。。如果您没有使用ActiveRecord,请编辑您的OP以描述如何生成错误。tnx用于回复。是的。我已经包括了模型响应。请看我的编辑。tnxThx。那么我至少在原则上同意@RailsOuter给出的答案。他的回答和我先前评论中的文档应该会让您走上正确的轨道。您好,我有一个问题,请参阅railsouter的回答,我在create action else语句的format.html{render:show}上遇到了一个错误。它给我一个错误,模板丢失。我尝试了format.html{render'tasks/show'},但仍然导致responseCreate中出现错误。如何正确呈现此内容?请尝试{render'tasks/show',@task}甚至将_重定向到:show,@task我将退出-@RailsOuter为您提供了很好的建议。tnx可快速回复。我现在再试一次。您好,请参阅CREATEACTIONELSE语句中的format.html{render:show}。结果是出现错误,缺少模板。我尝试了format.html{render'tasks/show'},但仍然导致ResponseCreate中出现错误ArgumentError。只需尝试render@taskhi就可以了。我已经尝试过了。仍然不起作用。它总是导致模板丢失。ie:url应该是这样的:但是在错误发生后,当您尝试{render'tasks/show'}时,eurl看起来是这样的。您得到的完整错误是什么?
<% if flash[:error] -%>
    <p class='alert alert-danger'><%=h flash[:error] %></p>
  <% end -%>
  <% if flash[:notice] -%>
    <p class='alert alert-success'><%=h flash[:notice] %></p>
  <% end -%>