如何在rails的渲染动作中传递参数

Posted

技术标签:

【中文标题】如何在rails的渲染动作中传递参数【英文标题】:how to pass parameter in render action in rails 【发布时间】:2012-11-07 03:28:23 【问题描述】:
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>

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

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

【问题讨论】:

您真的必须将id 传递给new 视图吗?您已经设置了@emppede,在您的视图中使用它。 这是我必须以我的形式发送的另一个 ID。我必须从这里发送 id,因为我的新方法就像 【参考方案1】:

您在控制器操作中定义的所有实例变量都存在于视图中。 因此,如果您在控制器中定义 @id = 11,您可以使用 &lt;%= @id %&gt; 在视图中访问它。

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

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

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

【讨论】:

我必须将用户 ID 传递给新方法,以便我可以通过表单传递它并保存。 @id%> 但是当表单出现错误时,它会呈现为新的但我有发送 @emppede.ad 中的 id。我该怎么做? 你能编辑我的问题以便我得到结果吗?我搞砸了。 谢谢,我明白了,我必须在 create 方法中定义 @id= @emppede.ad 然后就可以了 ....【参考方案2】:

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

【讨论】:

以上是关于如何在rails的渲染动作中传递参数的主要内容,如果未能解决你的问题,请参考以下文章

Rails:使用渲染传递参数:action?

Rails - 如何将 id 数组作为隐藏字段的参数传递?

ReactJS:从 rails 传递参数以将路由器反应到组件

在Spring boot中,如何将表单动作中的jsp表单输入的值作为参数传递

在GraphQL / Rails中如何在query_type中传递参数?

如何将模型传递给具有其他参数的动作