2017-01-29 72 views
-1

我试图做一个表单,用户可以用自己的用户名这样的正常凋谢后 - >正常更改视图基础上轨在select_tag选择选项

=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: [email protected]) 
     # (if anonymous selected) 
     do @anonymous.confessions.build 
    end 
+0

表单数据将在params中提供hash –

+0

可以用你的plz解释一下代码片段 –

+0

的答案我希望你的实际缩进比这里更有秩序,因为这里到处都是。清洁代码是可读代码,可读代码可以更容易地找到错误。 – tadman

回答

0

要访问此:

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 
:您使用 confession_params[:id],或 params[:confession][:id] 如果要有条件地加载不同的观点,你可以使用的respond_to块这样的ID PARAMS

这将加载foo.html.erbbar.html.erb,根据你@confession:id参数,通过你的选择通过form_for标记,它根据视图的变量模型加载参数名称。

+0

by [:id] you mean [:confession] [:postid] ie [:tablename] [:attribute] ryt? –

+0

我在我的代码中试过这个 @ anonymous.each do | a | \t @调试=一个 如果PARAMS [:表白] [:帖子ID] == '匿名' @自白= a.confessions.build 别的 \t @自白= current_amitian.confessions.build 和得到错误=未定义方法'[]'为零:Nillclass –

+0

然后您正在使用非标准参数。尝试读取请求的日志,它将打印与它的标识符一起发送的参数。 – ErvalhouS