2017-01-29 13 views
-1

Я пытаюсь сделать форму, где пользователь может увядать пост обычно с именем пользователя, как это -> нормальныйChange View на основе выбранного в 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' 

или Анонимно, где будут скрыты их имена и никто не узнает, кто разместил это сообщение .. для этого я думал, что я сделаю пользователя с именем anonymous в базе данных, и если пользователь будет выбирать анонимный в 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

данные формы будут доступны в параметрах hash –

+0

может у plz объяснить в ответ на фрагмент кода –

+0

Надеюсь, ваш фактический отступ намного упорядочен, чем здесь, потому что это повсюду. Чистый код - это читаемый код, а читаемый код упрощает поиск ошибок. – tadman

ответ

0

Чтобы получить доступ к этому: 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, который загружает имена параметров на основе переменной модели вашего представления.

+0

[: id], вы имеете в виду [: confession] [: postid] ie [: tablename] [: attribute] ryt? –

+0

Я пробовал это в своем коде @ anonymous.each do | a | \t @ отладки = а если PARAMS [: признание] [: сообщения дан] == 'Anonymous' @ исповедь = a.confessions.build еще \t @ исповедь = current_amitian.confessions.build и получил ошибку = undefined method '[]' для nil: Nillclass –

+0

Затем вы используете нестандартные параметры. Попробуйте прочитать журналы запроса, он распечатает параметры, отправленные с его идентификаторами. – ErvalhouS

 Смежные вопросы

  • Нет связанных вопросов^_^