在不同模型的控制器中在Rails中创建模型

时间:2015-11-29 08:24:13

标签: ruby-on-rails ruby devise rails-activerecord

我试图在Rails应用中实现报价保存功能。我有一个用户模型has_many:引号和一个belongs_to:用户的报价模型。现在我有一个单独的Book Model,它将成为这些引用的来源。

在本书的show.html.erb文件中,我有一个表格可以为当前用户保存报价

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form role="form">
  <div class="form-group">
    <label for="name">
      Name
    </label>
    <input type="text" class="form-control" id="nameValue" />
  </div>
  <button id="generate" type="submit" class="btn btn-default" disabled="true">
    Generate Story
  </button>
</form>

<p>The persons name is <span id="name"></span>
</p>

在Book控制器中,我有

<%= form_for (@new_quote) do |f| %>
<div class="field">
    <%= f.hidden_field :book_id, :value => @new_comment.book_id %>
    <%= f.text_field :body %>
</div>
<div class="actions">
    <%= f.submit %>
</div>
<% end %>

引用保存得很好,但问题是,因为我在show方法中有这个引用创建语句,每次我去我的Book模型的show.html.erb页面时,它会创建一个空体的引用。

我该怎么做才能解决这个问题?我在想它可能会将这个Quote创建移动到Quote控制器的实际创建方法,但我不知道如何准确传递参数。

1 个答案:

答案 0 :(得分:1)

你可以只引用build,但不能将其保存到数据库中。然后用户需要发送表单以保存该记录。只需将show方法更改为:

即可
def show
  @new_quote = current_user.quotes.build(book_id: params[:id])
end