根据在rails中的select_tag中选择的选项更改视图

时间:2017-01-29 17:10:35

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rubygems

我正在尝试创建一个表单,用户可以使用这样的用户名正常发布 - >正常

  =form_for @confession , html: {multipart: true} do |f|
    =f.label :Confess
    =f.text_area :confession , require: true
    =f.file_field :confessionimage
    =f.select (:id,options_for_select(ID))
    =f.submit 'Confess'

或匿名,他们的名字将被隐藏,没有人会知道谁发布了这篇帖子..为此我想的是我会在数据库中创建一个名为匿名的用户,如果用户在发布时选择匿名在select_form中以匿名用户身份发布。

在我的控制器中我想要这样的东西和主要观点我无法理解控制器如何知道用户选择了什么?

这是我的控制器

    def index 
       @amitian = Amitian.where(institute: current_amitian.institute) if                 amitian_signed_in?
       @confessions = Confession.where(amitian_id: @amitian.ids).order('created_at   DESC') if amitian_signed_in?
       @confession = current_amitian.confessions.build 
       @anonymous = Amitian.where(email: anonymous@anonymous.com)
       # (if anonymous selected )
       do @anonymous.confessions.build   
    end

1 个答案:

答案 0 :(得分:0)

要访问此ID:id params您使用confession_params[:id]params[:confession][:id] 如果要有条件地加载不同的视图,可以使用这样的respond_to块:

if confession_params[:id] == 1 #or params[:confession][:id] == 1
  loaded_view = :foo
else
  loaded_view = :bar
end

respond_to do |format|
  format.html { render loaded_view }
end

这将根据您foo.html.erb bar.html.erb参数加载@confession:id,该参数由form_for标记选择,该标记基于加载参数名称在你的视图的变量模型上。