从控制器传递视图,查看并返回到Rails 4.0中的控制器

时间:2014-01-17 17:29:44

标签: ruby-on-rails view controller

我的控制器方法中有以下内容:

@comment = Comment.where(:reviewed_at == nil).first

然后,在我看来,我有这个:

<b><%= @comment.comment %></b>
<br>
<br>

<%= simple_form_for :phrase do |f| %>
    <%= f.input :phrase, label: 'Phrase you would like to add:' %>
    <br>
    <%= f.input :emotion, collection: [[true, 'Positive'], [false, 'Negative']], as: :radio_buttons, label: 'Emotion', label_method: :last %>
    <br>
    <%= f.input :category, collection: @categories, as: :radio_buttons, label: 'Categories', label_method: :last %>
    <br>
    <%= f.button :submit, 'Add to Dictionary' %>
<% end %>

当按下:submit按钮时,我还需要将@comment传递回我的控制器,或以某种方式从我的控制器访问@comment。我尝试使用 -

f.hidden :comment, :value => @comment

simple_form_for block内,但没有骰子。我知道我可以通过查询数据库再次查看评论,但我觉得这不是正确的方法。如何将变量传递给视图然后再传回控制器?

1 个答案:

答案 0 :(得分:0)

您无法在hidden_field中转移对象,但可以通过将此ID添加到表单来传输ID

f.hidden_field :comment_id, :value => @comment.id

因此,在接收控制器操作中,您可以通过以下行访问注释

@comment = Comment.find(params[:phrase][:comment_id])

这应该为你做,...它是一种更好的方法来查询数据库,然后将一个对象从一个动作传递到另一个动作,因为当你在数据库中有变化但是使用过时的对象并保存时会导致严重的问题或编辑此对象并将其写回db。