Ruby on rails 如何在RoR中的控制器(新建->;创建)之间传递值

Ruby on rails 如何在RoR中的控制器(新建->;创建)之间传递值,ruby-on-rails,ruby,Ruby On Rails,Ruby,这似乎很基本,但我搞不懂 我有一个“写评论”链接,如下所示: <%= link_to 'Write', new_review_path(@new, :vendor_id => @vendor.id) %> 我想我需要更改表单_中的url,但我不清楚如何更改。以下是我目前的情况: <% form_for(@review) do |f| %> ...... 查看/评论/new.html.erb的我的代码: <h1>New review for <

这似乎很基本,但我搞不懂

我有一个“写评论”链接,如下所示:

<%= link_to 'Write', new_review_path(@new, :vendor_id => @vendor.id) %>
我想我需要更改表单_中的url,但我不清楚如何更改。以下是我目前的情况:

<% form_for(@review) do |f| %>
 ......
查看/评论/new.html.erb的我的代码:

<h1>New review for <%= @vendor.name%></h1>

Current User ID: <%= @current_user.id %>
Vendor ID: <%= @vendor.id %> <%= @review.vendor.id %>
Current Review ID: <%= @review.id %>

<% form_for @review do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :summary %><br />
    <%= f.text_field :summary %><br />

    <%= f.label :pro_review %><br />
    <%= f.text_field :pro_review %><br />

    <%= f.label :con_review %><br />
    <%= f.text_field :con_review %><br />

    <%= f.label :detail_review %><br />
    <%= f.text_field :detail_review %>  <br />

  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', reviews_path %>

当前用户ID:
供应商ID:
当前审阅ID:









以下是源代码视图:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Reviews: new</title>
  <link href="/stylesheets/scaffold.css?1238999620" media="screen" rel="stylesheet" type="text/css" />
</head>
<body>

<p style="color: green"></p>

<h1>New review for Fiberlink</h1>

Current User ID: 2
Vendor ID: 16 16
Current Review ID: 

<form action="/reviews" class="new_review" id="new_review" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="XDknE1mvQT4zwem1z/gCYm8I2ODhqHLKKgd8y12zzzo=" /></div>


  <p>
    <label for="review_summary">Summary</label><br />
    <input id="review_summary" name="review[summary]" size="30" type="text" /><br />

    <label for="review_pro_review">Pro review</label><br />
    <input id="review_pro_review" name="review[pro_review]" size="30" type="text" /><br />

    <label for="review_con_review">Con review</label><br />
    <input id="review_con_review" name="review[con_review]" size="30" type="text" /><br />

    <label for="review_detail_review">Detail review</label><br />
    <input id="review_detail_review" name="review[detail_review]" size="30" type="text" />  <br />

  </p>
  <p>
    <input id="review_submit" name="commit" type="submit" value="Create" />
  </p>
</form>

<a href="/reviews">Back</a>

</body>
</html>

评论:新

Fiberlink新进展 当前用户ID:2 供应商编号:16 当前审阅ID: 摘要

专业评论

Con review

详细审查


你就快到了。您需要对新的
方法稍作更改

  def new
    @review = Review.new
    @vendor = Vendor.find(params[:vendor_id])
    @review.vendor = @vendor # this will insert the vendor_id into the form
                             # when you do form_for

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @review }
    end
  end
编辑:尝试在视图代码中添加一个隐藏字段,以保存
供应商id

<% form_for @review do |f| %>
  <%= f.hidden_field vendor_id %>
  # ...

你快到了。您需要对新的
方法稍作更改

  def new
    @review = Review.new
    @vendor = Vendor.find(params[:vendor_id])
    @review.vendor = @vendor # this will insert the vendor_id into the form
                             # when you do form_for

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @review }
    end
  end
编辑:尝试在视图代码中添加一个隐藏字段,以保存
供应商id

<% form_for @review do |f| %>
  <%= f.hidden_field vendor_id %>
  # ...
我通常会这样做:

<% form_for Review.new, :url => new_review_path do |f| %>
  <%= f.hidden_field :vendor_id, :value => @vendor.id %>
new_review_path do|f|%>
@vendor.id%>
我通常会做:

<% form_for Review.new, :url => new_review_path do |f| %>
  <%= f.hidden_field :vendor_id, :value => @vendor.id %>
new_review_path do|f|%>
@vendor.id%>

Hi--谢谢--我是否也需要对create进行更改?我一定是做了一些调整,它不太有效…谢谢,表单中没有传递任何内容,@review.vendor的view/new.erb.html中显示的值也不起作用……我假设它将进入:create操作,因为它正在使用POST Through表单,但我无法理解为什么没有向数据库中插入任何内容……好的,我正在考虑这一点……它没有通过其余部分有什么原因吗参数[:回顾])的定义了吗?更改route.rb会影响这一点吗?我不确定路由是否/如何在其中工作,但如果您没有在表单_中指定:url,它似乎默认为list。(在您生成的HTML中,表单提交到/reviews,这是列表。)您好--谢谢--我还需要对create进行更改吗?我一定是做了一些调整,它不太有效…谢谢,表单中没有传递任何内容,@review.vendor的view/new.erb.html中显示的值也不起作用……我假设它将进入:create操作,因为它正在使用POST Through表单,但我无法理解为什么没有向数据库中插入任何内容……好的,我正在考虑这一点……它没有通过其余部分有什么原因吗参数[:回顾])的定义了吗?更改route.rb会影响这一点吗?我不确定路由是否/如何在其中工作,但如果您没有在表单_中指定:url,它似乎默认为list。(在生成的HTML中,表单提交给/审阅,即列表。)