仅在信息尚未存在于数据库中时才显示表单字段(Show form fields only if information not already in database)

编程入门 行业动态 更新时间:2024-10-27 01:27:48
仅在信息尚未存在于数据库中时才显示表单字段(Show form fields only if information not already in database)

有没有办法只将表单参数显示为输入字段,如果您还没有其他地方的信息(例如来自用户会话)?

这是我的表格:

<%= simple_form_for [@user, Message.new] do |f| %> <p> <%= f.input :name, label: "Name: ", input_html: {size:50} %> <%= f.input :email, label: "E-mail: ", input_html: {size:50} %> <%= f.input :message_text, label: "Message: " %> </p> <p> <%= f.button :submit, "Send Message" %> </p>

如果填写表单的人当前没有登录,我会有效地希望它显示“名称”,并且如果是,则预先填充用户的“名字姓氏”。

电子邮件地址相同。

消息的接收者应该接收表单元素或预先填充的元素,具体取决于哪些是相关的。

这是在窗体视图或MessagesController中发生的吗?

补充:我还在下面定义了message_params,它在'create'方法中调用:

def message_params params.require(:message).permit(:name, :email, :message_text, :subject, :is_read, :user_id) end

这有影响吗?

Is there a way to only display form parameters as input fields if you don't already have the information somewhere else (e.g. from the user session)?

This is my form:

<%= simple_form_for [@user, Message.new] do |f| %> <p> <%= f.input :name, label: "Name: ", input_html: {size:50} %> <%= f.input :email, label: "E-mail: ", input_html: {size:50} %> <%= f.input :message_text, label: "Message: " %> </p> <p> <%= f.button :submit, "Send Message" %> </p>

I'd effectively like it to show "name" if the person filling in the form is NOT currently signed in, and be pre-populated with the user's "firstname lastname" from the database if they are.

Same for e-mail address.

The recipient of the message should receive either the form elements or the pre-populated elements, depending on which is relevant.

Is this something that happens in the form view or MessagesController?

ADDED: I've also defined message_params below this which is called in the 'create' method:

def message_params params.require(:message).permit(:name, :email, :message_text, :subject, :is_read, :user_id) end

Could this have an impact?

最满意答案

在你的控制器中:

@user = current_user || User.new

Managed to fix this with a little help. Added to messages controller:

def new @user = User.find_by_username(params[:user_id]) @message = Message.new if current_user.present? @message.name = current_user.name @message.email = current_user.email end # display form for 'new' message end

added to user model:

def name "#{firstname} #{lastname}" end

amended view for new message:

<%= simple_form_for [@user, @message] do |f| %> <%= f.input :name, label: "Name: ", input_html: {size:50} %> <%= f.input :email, label: "E-mail: ", input_html: {size:50} %> <%= f.input :subject, label: "Subject: ", input_html: {size:100} %> <%= f.input :message_text, label: "Message: " %> <p> <%= f.button :submit, "Send Message" %> </p> <% end %>

Thanks for the nudges in the right direction @Pierre.

更多推荐

form,<%,%>,电脑培训,计算机培训,IT培训"/> <meta name="description&

本文发布于:2023-08-01 04:10:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1352787.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字段   表单   时才   数据库中   信息

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!