有没有办法只将表单参数显示为输入字段,如果您还没有其他地方的信息(例如来自用户会话)?
这是我的表格:
<%= 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) endCould this have an impact?
最满意答案
在你的控制器中:
@user = current_user || User.newManaged 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 endadded to user model:
def name "#{firstname} #{lastname}" endamended 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&
发布评论