我试图在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控制器的实际创建方法,但我不知道如何准确传递参数。
答案 0 :(得分:1)
你可以只引用build
,但不能将其保存到数据库中。然后用户需要发送表单以保存该记录。只需将show
方法更改为:
def show
@new_quote = current_user.quotes.build(book_id: params[:id])
end