7
def create
    @emppede = Emppede.new(params[:emppede])

    respond_to do |format|
      if @emppede.save
        format.html { redirect_to :action => :index, :id => @emppede.ad }
        format.json { render json: @emppede, status: :created, location: @emppede }
      else

        format.html { render action: "new", :id => @emppede.ad } *(....error)*
        format.json { render json: @emppede.errors, status: :unprocessable_entity }
      end
    end
  end

我必须在新方法中传递 id。在这里,如果数据保存正确,则进入索引方法。但如果不是,那么它应该使用新的参数 id。我如何通过渲染动作传递参数?在这里我想做,但参数 id 没有传递给新方法。我错误地突出了那部分。如果我做

 format.html { redirect_to :action => :new, :id => @emppede.ad }

然后它不会给出错误消息...

我必须将用户 ID 传递给新方法,以便我可以通过表单传递它并保存。

<div id="employm" style="display:none">


    <%= f.text_field :ad, :value=> @id%>

            </div>

但是当表单出现错误时,它会呈现为新的,但在这里我必须发送 @emppede.ad. 我怎样才能做到这一点?因为为了输入新方法,应该传递 id

redirect_to :action => :new, :id => @id
4

2 回答 2

7

您在控制器操作中定义的所有实例变量都存在于视图中。因此,如果您@id = 11在控制器中定义,您可以在视图中使用<%= @id %>.

如果您想通过重定向执行此操作,您可以简单地访问parameters视图内部(或首先在控制器中使用它们,然后使用上面的实例方法。

您发布的代码有点神秘,但渲染不会进入new方法,而只会new.html.erb在当前上下文中渲染。因此,如果您在创建操作中声明 @id 并呈现新的,您将拥有它。

重定向到 :action 时,您必须将 @id 作为参数传递。

于 2012-11-19T08:34:30.093 回答
7

渲染将寻找“new.html”,它不会进入新方法。

于 2012-11-19T08:36:10.557 回答