Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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 Rails-如何呈现我自己的操作?_Ruby On Rails_Templates_Action_Render - Fatal编程技术网

Ruby on rails Rails-如何呈现我自己的操作?

Ruby on rails Rails-如何呈现我自己的操作?,ruby-on-rails,templates,action,render,Ruby On Rails,Templates,Action,Render,我正在建立一个简单的购物车。 这是路线,其中是数据: 匹配“kosik/osobni-udaje”=>“主页#购物车(个人)数据”,:as=> :购物车\个人\数据 在这一部分中,是订单的形式(=form_表示@order do | f |)-此形式可转到: def update @order = Order.find(params[:id]) fname = Order.check_attribute(params[:order][:first_name], 3, 40)

我正在建立一个简单的购物车。 这是路线,其中是数据:

匹配“kosik/osobni-udaje”=>“主页#购物车(个人)数据”,:as=> :购物车\个人\数据

在这一部分中,是订单的形式(
=form_表示@order do | f |
)-此形式可转到:

  def update
    @order = Order.find(params[:id])
    fname = Order.check_attribute(params[:order][:first_name], 3, 40)
    lname = Order.check_attribute(params[:order][:last_name], 3, 40)

    if fname.nil? || lname.nil?
      @err = ''
      @err += 'Name is required<br />'
      @err += 'Surname is required<br />'
      render action: "/kosik/osobni-udaje"

    else
      respond_to do |format|
        if @order.update_attributes(params[:order])
          format.html { redirect_to cart_summary_path }
          format.json { head :no_content }
        else
          format.html { render action: "/kosik/osobni-udaje" }
          format.json { render json: @order.errors, status: :unprocessable_entity }
        end
      end
    end
  end
我做错了什么

谢谢

试着这样做:

  def update
    @order = Order.find(params[:id])
    fname = Order.check_attribute(params[:order][:first_name], 3, 40)
    lname = Order.check_attribute(params[:order][:last_name], 3, 40)

    if fname.nil? || lname.nil?
      @err = ''
      @err += 'Name is required<br />'
      @err += 'Surname is required<br />'
      render action: "/kosik/osobni-udaje"

    else
      if @order.update_attributes(params[:order])
        respond_to do |format|
          format.html { redirect_to cart_summary_path }
          format.json { head :no_content }
        end
      else
        respond_to do |format|
          format.html { render action: "/kosik/osobni-udaje" }
          format.json { render json: @order.errors, status: :unprocessable_entity }
        end
      end
    end
def更新
@order=order.find(参数[:id])
fname=Order.check_属性(参数[:Order][:first_name],3,40)
lname=Order。检查_属性(参数[:Order][:last_name],3,40)
如果fname.nil?| |lname.nil?
@错误=“”
@err+='名称是必需的
' @err+=“姓氏是必需的
” 渲染操作:“/kosik/osobni-udaje” 其他的 如果@order.update_属性(参数[:order]) 回应待办事项|格式| format.html{重定向到购物车\u摘要\u路径} format.json{head:no_content} 结束 其他的 回应待办事项|格式| format.html{呈现操作:“/kosik/osobni-udaje”} format.json{render json:@order.errors,status::unprocessable_entity} 结束 结束 结束
只需更改“response_to”的位置
结束

好的,我这样解决它:

if fname.nil? || lname.nil?
  @err = ''
  @err += '...'
  @err += '...'

  flash[:error] = @err
  redirect_to :back
...
在我看来

- if flash[:error]
  %p #{flash[:error]}
这可能不是最好的解决方案,但它确实有效…

您可以使用:

render 'home/cart_personal_data'
URI
“/kosik/osobni-udaje”
实际上并不是一个动作,尽管有一条指向它的路径<代码>渲染需要控制器、动作或文件方面的内容。有关详细信息,请参阅


希望这有帮助。

我认为您的代码是错误的

您应该将验证放在自定义验证器中,如以下指南中的示例:。之后,您可以这样做:

def update
  @order = Order.find(params[:id])
  if @order.update_attributes(params[:order])
    respond_to do |format|
      format.html { redirect_to cart_summary_path }
      format.json { head :no_content }
     end
   else
     respond_to do |format|
       format.html { render action: "/kosik/osobni-udaje" }
       format.json { render json: @order.errors, status: :unprocessable_entity }
     end
   end
end

程序只转到IF块(因为
fname
是NIL=>这是正确的),但是行
渲染操作:“/kosik/osobni-udaje”
不会渲染操作
“/kosik/osobni-udaje”
,而是
/orders/9
-如果我删除行
“/kosik/osobni-udaje”
,即使如此,如果我使用
重定向到“/kosik/osobni-udaje”
,应用程序也会重定向到
/orders/9
——很好,我会重定向到设置的URL(问题-不存在
@err
变量)。如果我使用
渲染操作:“/kosik/osobni-udaje”
,我将被重定向到
/order/9
。。。但为什么不呈现
“/kosik/osobni-udaje”
页面???
def update
  @order = Order.find(params[:id])
  if @order.update_attributes(params[:order])
    respond_to do |format|
      format.html { redirect_to cart_summary_path }
      format.json { head :no_content }
     end
   else
     respond_to do |format|
       format.html { render action: "/kosik/osobni-udaje" }
       format.json { render json: @order.errors, status: :unprocessable_entity }
     end
   end
end